Yii 1.1 + PhpStorm 8 + PHPUnit 3.7.* + Composer на Ubuntu

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Ответить
letovlive
Сообщения: 1
Зарегистрирован: 2014.10.12, 18:50

Yii 1.1 + PhpStorm 8 + PHPUnit 3.7.* + Composer на Ubuntu

Сообщение letovlive »

Все началось с моего перехода на Ubuntu. Так как я только начинаю в это вникать это немного затруднило меня.
Написать инструкцию надоумил тот факт, что нигде не было подробной инструкции как это все делается.
Готовой инструкции не нашел, так как phpunit не ставится вместе с phpunit_selenium, а только можно использовать установочный файл phpunit.phar и то только для использования phpunit, для установки phpunit_selenium необходимо использовать composer.
Итак побродив по ресурсам и вскипятив мозг нашел и собрал гайд, основываясь на двух замечательных постах вот этих людей

http://blog.mediasuite.co.nz/tip-how-to ... -composer/

viewtopic.php?f=10&t=19706



Итак инструкция для использования тестов в phpstorm

Что нам нужно для начала:

1. Создаем каркас.

2. Скачиваем Selenium

http://selenium-release.storage.googlea ... 2.43.1.jar

3. Создаем файл composer.json в корне со следующим содержанием

Код: Выделить всё

{
    "require-dev": {
        "phpunit/phpunit": "3.7.*",
        "phpunit/phpunit-selenium": ">=1.2",
        "phpunit/dbunit": ">=1.2",
        "phpunit/phpunit-story": "*"
    },
    "autoload": {
        "psr-0": {"": "src"}
    },
    "config": {
        "bin-dir": "bin/"
    }
} 
Можете также указать необходимые именно вам пакеты.
4. После этого устанавливаем сам composer:

curl -sS https://getcomposer.org/installer | php

Далее с помощью composer'а установить пакеты с зависимостями:

./composer.phar install --dev

Чтобы проверить все ли прошло ОК выполнить проверку версии:


./bin/phpunit --version

В дальнейшем, если нужно добавить какие-то пакеты просто добавляете их в composer.json и делаете update.

5. Нужно отредактировать файлы bootstrap.php и phpunit.xml, которые находятся в protected/tests

bootstrap.php

Код: Выделить всё

<?php
// change the following paths if necessary

//Здесь указываете пути к вашей папке с framework'oм  

$yiit=dirname(__FILE__).'/../../../yii/framework/yiit.php';
$config=dirname(__FILE__).'/../config/test.php';
//Класс, который будет использован вместо CTestCase
require_once('TestCase.php');
//Класс, который будет использован вместо CDbTestCase
require_once('DbTestCase.php');
require_once($yiit);
Yii::createWebApplication($config); 
phpunit.xml

Код: Выделить всё

<phpunit bootstrap="bootstrap.php"
      colors="false"
      convertErrorsToExceptions="true"
      convertNoticesToExceptions="true"
      convertWarningsToExceptions="true"
      stopOnFailure="false">
   <selenium>
      <browser name="Chrome" browser="*googlechrome" />
      <browser name="Firefox" browser="*firefox" />
   </selenium>
</phpunit> 
В phpunit.xml указываете браузеры, в которых будет проходить тест.


5. Настраиваем интерпритатор php File->Settings->PHP

Изображение

На текущий момент, к сожалению, невозможно воспользоваться классами, который предлагает Yii для unit-тестов, а именно CTestCase и CDbTestCase (последний является потомком CTestCase), если мы используем phar-архив PHPUnit, об этом разработчикам Yii известно. В следующих релизах это будет исправлено, ну а пока, можно прибегнуть к костылям. Я скептически отношусь к советам что-то править и комментировать в файле CTestCase.php. Поскольку этот файл является частью Фреймворка любые поправки и изменения в его код могут вносить только контрибьюторы yii.
Для того, чтобы избежать ошибок, которые вызывают выражения require_once в классе CTestCase, создадим в корне директории tests свой абстрактный класс TestCase, со следующим содержимым:

Код: Выделить всё

<?php

abstract class TestCase extends PHPUnit_Framework_TestCase
{

} 
Создаем класс DbTestCase на основе СdbTestCase,который, внимание(!), полностью повторяет функционал класса CDbTestCase, только расширяет класс TestCase, а не CTestCase. Просто скопируйте код из класса CDbTestCase.php в файл DbTestCase.php и укажите, что он расширяет класс TestCase.

Теперь осталось лишь создать конфигурацию тестирования в PHPStorm (create run configuration from context).
Для того, чтобы создать конфигурацию тестирования выберите директорию tests и вызовите контекстное меню (клик правой кнопкой мыши на папке), затем выберите пункт "Create tests". В открывшемся окне для Test Scope выберите "Directory", а в поле Directory укажите путь к папке "tests/unit".
Не забудьте добавить в поле Test Runner Options следующие параметры запуска:

--bootstrap \ВАШ ПУТЬ\tests\bootstrap.php --configuration \ВАШ ПУТЬ\tests\phpunit.xml

Изображение

Сохраните конфигурацию.

Теперь можно и к тестированию приступить. Не забудьте, что для тестирования Active Record класс теста должен расширять класс DbTestCase.php (который мы используем вместо CDbTestCase), тоже самое в случае тестирования обыкновенной модели - класс теста расширяет класс TestCase, а не CtestCase.

Запускаем selenium. Перейти в папку с сервером и запустить командой:

java -jar selenium-server.jar



Для тестирования перейти в

protected/tests

и выполнить

../../bin/phpunit unit - для юнит тестирования

или

../../bin/phpunit functional — для функционального тестирования


чтобы запустить тесты

P.S. Извиняюсь за копипасту местами :)
gnus212
Сообщения: 3
Зарегистрирован: 2013.09.23, 17:13

Re: Yii 1.1 + PhpStorm 8 + PHPUnit 3.7.* + Composer на Ubunt

Сообщение gnus212 »

Спасибо, пользительно для меня!
Ответить