PHPUnit Composer autoload

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

PHPUnit Composer autoload

Сообщение Brainfuck »

У меня есть проект на 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
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PHPUnit Composer autoload

Сообщение ElisDN »

У Yii для классов проекта своя автозагрузка по Yii::setAlias. В _bootstrap.php перед тестами делайте new Application($config).
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: PHPUnit Composer autoload

Сообщение Brainfuck »

ElisDN писал(а): 2018.02.21, 13:26 У Yii для классов проекта своя автозагрузка по Yii::setAlias. В _bootstrap.php перед тестами делайте new Application($config).
Где этот файл должен лежать?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PHPUnit Composer autoload

Сообщение ElisDN »

В папке 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__);
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: PHPUnit Composer autoload

Сообщение Brainfuck »

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__);
Точно yii\web\Application, а не yii\console\Application? У меня тесты для консольного приложения! И еще у меня там нет файла test.php. И файла phpunit.xml.dist тоже нет...
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PHPUnit Composer autoload

Сообщение ElisDN »

Brainfuck писал(а): 2018.02.21, 13:44 Точно yii\web\Application, а не yii\console\Application? У меня тесты для консольного приложения!
Тогда yii\console\Application.
Brainfuck писал(а): 2018.02.21, 13:44 И еще у меня там нет файла test.php.
В yii2-app-basic есть https://github.com/yiisoft/yii2-app-bas ... ter/config
Brainfuck писал(а): 2018.02.21, 13:44 И файла phpunit.xml.dist тоже нет...
Создайте в корне:

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

<?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
Ответить