У меня есть проект на yii2. Да знаю там по дефолту codeception, я пытался разобраться - но для меня это СЛИШКОМ СЛОЖНО! Мне нужны исключительно юнит-тесты, а там наворочено куча всего. В общем я выпилил codeception и впилил phpunit. Он в принципе работает (простенький демо assertTrue без зависимостей завелся), но когда я пытаюсь использовать свои классы из проекта - то все рушится "class not found". Почти уверен что проблема в автозагрузке. Почему-то именно с phpunit она не работает. Как быть? Гуглил, пытался в composer.json проставлять autoload, указывать phpunit --bootstrap vendor/autoload.php как в гугле написано, но ничего не заработало. Как мне завести тесты? Они мне сейчас очень нужны!
P.S. php 5.6, phpunit 5, yii 2.0.14
PHPUnit Composer autoload
Re: PHPUnit Composer autoload
У Yii для классов проекта своя автозагрузка по Yii::setAlias. В _bootstrap.php перед тестами делайте new Application($config).
Re: PHPUnit Composer autoload
В папке tests и подключаться в phpunit.xml.dist. Там определять окружение как https://github.com/yiisoft/yii2-app-bas ... tstrap.php, грузить конфиг и создавать приложение:
Код: Выделить всё
<?php
define('YII_ENV', 'test');
defined('YII_DEBUG') or define('YII_DEBUG', true);
require_once __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
require __DIR__ .'/../vendor/autoload.php';
$config = require __DIR__ .'/../config/test.php';
new yii\web\Application($config);
Yii::setAlias('@tests', __DIR__);
Re: PHPUnit Composer autoload
Точно yii\web\Application, а не yii\console\Application? У меня тесты для консольного приложения! И еще у меня там нет файла test.php. И файла phpunit.xml.dist тоже нет...ElisDN писал(а): ↑2018.02.21, 13:31 В папке tests и подключаться в phpunit.xml.dist. Там определять окружение как https://github.com/yiisoft/yii2-app-bas ... tstrap.php, грузить конфиг и создавать приложение:
Код: Выделить всё
<?php define('YII_ENV', 'test'); defined('YII_DEBUG') or define('YII_DEBUG', true); require_once __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; require __DIR__ .'/../vendor/autoload.php'; $config = require __DIR__ .'/../config/test.php'; new yii\web\Application($config); Yii::setAlias('@tests', __DIR__);
Re: PHPUnit Composer autoload
Тогда yii\console\Application.
В yii2-app-basic есть https://github.com/yiisoft/yii2-app-bas ... ter/config
Создайте в корне:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<phpunit bootstrap="./tests/_bootstrap.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
stopOnFailure="false">
<testsuites>
<testsuite name="Test Suite">
<directory>./tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">./src/</directory>
</whitelist>
</filter>
</phpunit>
Код: Выделить всё
vendor/bin/phpunit