Я только что установил PHPUnit версии 3.7.19 от Себастьяна Бергмана через Composer и написал класс, который я хотел бы unit test.
Я хотел бы, чтобы все мои классы автоматически загружались в каждый unit test без, чтобы использовать include
или require
в верхней части моего теста, но это сложно!
Это то, что выглядит моя структура каталогов (трейлинг/слэш указывает каталог, а не файл):
- composer.json
- composer.lock
- composer.phar
- Библиотека /
- returning.php
- Тесты /
- returningTest.php
- продавец /
- бен /
- PHPUnit
- композитор /
- PHPUnit/
- Symfony/
- autoload.php
- бен /
Мой файл composer.json содержит следующее:
"require": {
"phpunit/phpunit": "3.7.*",
"phpunit/phpunit-selenium": ">=1.2"
}
В файле класса return.php содержится следующее:
<?php
class Returning {
public $var;
function __construct(){
$this->var = 1;
}
}
?>
Мой тестовый файл returnTest.php включает в себя следующее:
<?php
class ReturningTest extends PHPUnit_Framework_TestCase
{
protected $obj = null;
protected function setUp()
{
$this->obj = new Returning;
}
public function testExample()
{
$this->assertEquals(1, $this->obj->var);
}
protected function tearDown()
{
}
}
?>
Однако, когда я запускаю ./vendor/bin/phpunit tests
из командной строки, я получаю следующую ошибку:
PHP Неустранимая ошибка: класс "Возврат" не найден в /files/code/php/db/tests/returningTest.php в строке 8
Я заметил, что composer
создал файл autoload.php
в vendor/autoload.php
, но не уверен, что это актуально для моей проблемы.
Кроме того, в некоторых других ответах на Qaru люди упоминали что-то об использовании PSR-0 в композиторе и команду namespace
в PHP, но у меня нет было успешным в использовании одного из них.
Пожалуйста, помогите! Я просто хочу автозагружать свои классы в PHPUnit, поэтому я могу просто использовать их для создания объектов, не беспокоясь о include
или require
.
Обновление: 14 августа 2013
Теперь я создал проект с открытым исходным кодом под названием PHPUnit Skeleton, чтобы помочь вам быстро и легко протестировать PHPUnit для вашего проекта.