Не могу запустить тестирование из коробки.

Всё про тестирование в Yii 2.0
Ответить
gudik
Сообщения: 9
Зарегистрирован: 2016.12.13, 11:35

Не могу запустить тестирование из коробки.

Сообщение gudik »

Теряю веру в жизнь... Будте добры подскажите, совсем недавно начал осваивать тестирование. Один раз получилось запустить. А сегодня уже пол дня вожусь и результат 0. Вод мои деийствия:

1) Удаляю все что было и чищу кеш композера (для чистоты эксперемента

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

$ rm -rf ~/.config/composer
$ composer clearcache
2) Согласно ману ставлю yii2 advanced (https://github.com/yiisoft/yii2-app-adv ... llation.md):

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

$ cd /var/www/
$ composer global require "fxp/composer-asset-plugin:^1.2.0"
$ composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application
$ cd yii-application
./init -> 0 -> yes
2.1) Создал БД: yii2advanced и yii2advanced_test
2.2) Применяю миграцию

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

./yii migrate -> yes
3) Далее согласно ману устанавливаю codecet (https://github.com/yiisoft/yii2/blob/ma ... t-setup.md):

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

$ composer global require "codeception/codeception=2.1.*"
$ composer global require "codeception/specify=*"
$ composer global require "codeception/verify=*"
3.1) Добавляю codecept в переменную окружения:

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

$ cat /etc/environment 
PATH="........:/home/gudik/.config/composer/vendor/bin/"
4) Далее по этому ману пытаюсь запустить тесты которые имеются в yii2-advanced (https://github.com/yiisoft/yii2-app-adv ... testing.md):

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

$ ./yii_test migrate -> yes
$ codecept build
Получаю ошибку:
[PHPUnit_Framework_Exception]
Argument 3 passed to Codeception\Event\FailEvent::__construct() must be an instance of Exception
, none given, called in /home/gudik/.config/composer/vendor/codeception/codeception/src/Codecept
ion/PHPUnit/Listener.php on line 50 and defined
Во вложении скрин.
gudik
Сообщения: 9
Зарегистрирован: 2016.12.13, 11:35

Re: Не могу запустить тестирование из коробки.

Сообщение gudik »

Обнаружил вот что:
phpunit/phpunit 5.7.3 The PHP Unit Testing framework.

Хотя на старых проектах где тестирование работает подтягивается:
phpunit/phpunit 5.6.3 The PHP Unit Testing framework.
gudik
Сообщения: 9
Зарегистрирован: 2016.12.13, 11:35

Re: Не могу запустить тестирование из коробки.

Сообщение gudik »

Совсем запутался....
При запуске функциональных тестов вылетала ошибка:

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

$ codecept run -c frontend
[yii\base\InvalidConfigException] The directory does not exist: ./assets 
Это вылечил следующим:

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

$ composer require "codeception/base=2.2.6"
Сейчас при установке вышеописанным способом ставиться версия: 2.2.7
gudik
Сообщения: 9
Зарегистрирован: 2016.12.13, 11:35

Re: Не могу запустить тестирование из коробки.

Сообщение gudik »

Пока маялся с функциональными тестами, заметил следущее при запуске:
$ codecept run
Codeception PHP Testing Framework v2.1.11
Powered by PHPUnit 5.3.5 by Sebastian Bergmann and contributors.
И
$ codecept run -c frontend
Codeception PHP Testing Framework v2.1.11
Powered by PHPUnit 5.7.3 by Sebastian Bergmann and contributors.
Беруться совсем разные версии PHP Unit!!! Как так ?!?!?!?!?!
В первом случае это версия из global require а во втором локальная (из проекта)
ПОЧЕМУ ? пожалуйста поделитесь мыслями.....
gudik
Сообщения: 9
Зарегистрирован: 2016.12.13, 11:35

Re: Не могу запустить тестирование из коробки.

Сообщение gudik »

Собственно финт ушами, аля:

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

$ composer require global "phpunit/phpunit=5.7.*"
не прокатил, пишет:
[InvalidArgumentException]
Could not find package global at any version for your minimum-stability (stable). Check the pack
age spelling or your minimum-stability
:(((
gudik
Сообщения: 9
Зарегистрирован: 2016.12.13, 11:35

Re: Не могу запустить тестирование из коробки.

Сообщение gudik »

РЕЗЮМЕ:
1
Весело, но вот к чему приводит чтение документации...
в место: composer global require "codeception/codeception=2.1.*"
Надо composer global require "codeception/codeception"

Тогда поставиться: codecept: 2.2.7, phpunit: 5.7.3 b и все будет работать кроме функциональных тестов, они будут падать с ошибкой:
Check contact<pre>PHP User Error 'yii\base\ErrorException' with message 'Exception (Invalid Configuration) 'yii\base\InvalidConfigException' with message 'The directory does not exist: ./assets'

in /var/www/yii-application/vendor/yiisoft/yii2/web/AssetManager.php:211
Это лечим как я выше писал, вот так:

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

$ composer require "codeception/base=2.2.6
2
Единственно чего я не понял почему при запуске: $ codecept run
Используется phpunit из composer global
А при запуске $ codecept run -с frontend из локальной папки вендор!

Буду весьма признателен, если объясните в чем дело!
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Не могу запустить тестирование из коробки.

Сообщение ElisDN »

А composer exec codecept что выдаёт?
gudik
Сообщения: 9
Зарегистрирован: 2016.12.13, 11:35

Re: Не могу запустить тестирование из коробки.

Сообщение gudik »

Очень странно, но выдает ровным счетом ничего...

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

gudik@gudik-noute:/var/www/yii-application$ composer self-update
You are already using composer version 1.2.4 (stable channel).
gudik@gudik-noute:/var/www/yii-application$ composer exec 
Available binaries:
- codecept
- markdown
- phpunit
- yii
gudik@gudik-noute:/var/www/yii-application$ composer exec codecept
gudik@gudik-noute:/var/www/yii-application$ composer exec codecept -- list
gudik@gudik-noute:/var/www/yii-application$ 
 

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

gudik@gudik-noute:~$ cat /etc/environment 
PATH="... /home/gudik/.config/composer/vendor/bin:/opt/composer"
NLS_LANG="RUSSIAN_RUSSIA.AL32UTF8"
gudik@gudik-noute:~$ ls /opt/composer/
total 1,7M
-rwxr-xr-x 1 gudik gudik 1,7M дек 13 10:10 composer
Пытаюсь понять что не так..
Подскажите кто чем может :)
FlatronBuda
Сообщения: 22
Зарегистрирован: 2015.03.09, 14:56

Re: Не могу запустить тестирование из коробки.

Сообщение FlatronBuda »

ElisDN писал(а): 2016.12.13, 16:12 А composer exec codecept что выдаёт?
Тоже столкнулся с такой проблемой, но решение правильное или нет не знаю. Хотелось бы узнать ваше как эксперта, сам тоже начинаю изучать тестирование
Запускал Laravel/Homestead(стоковый)
PHP 7.1
Codeception PHP Testing Framework v2.2.8
Powered by PHPUnit 5.7.9 by Sebastian Bergmann and contributors.
Yii 2.0.10
шаблон BASIC прям из коробки в файле config/test.php добавил

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

'components' => [
        'assetManager' => [
            'basePath' => '@webroot/web/assets',
        ],
        ...
        
шаблон Advanced тоже из коробки в файле frontend/config/test-local.php добавил

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

<?php
return yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../common/config/test-local.php'),
    require(__DIR__ . '/main.php'),
    require(__DIR__ . '/main-local.php'),
    require(__DIR__ . '/test.php'),
    [

        'components' => [
            'assetManager' => [
                'basePath' => '@frontend/web/assets',
            ]
        ],
    ]
);
и в папке backend /config/test-local.php

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

<?php
return yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../common/config/test-local.php'),
    require(__DIR__ . '/main.php'),
    require(__DIR__ . '/main-local.php'),
    require(__DIR__ . '/test.php'),
    [
        'components' => [
            'assetManager' => [
                'basePath' => '@backend/web/assets',
            ]
        ],
    ]
);
в итоге проходит все тесты но очень странно почему сразу не сморит сразу в папку web/assets
Ответить