Для запуска моих тестов с использованием PHPUnit проекта я делаю следующее: php vendor/bin/phpunit tests/SomeClassTest.php
который отлично работает с учетом следующего объявления класса:
class SomeClassTest extends PHPUnit_Framework_TestCase { public function test_someMethod() {} }
Но он терпит неудачу, когда я это делаю:
use PHPUnit\Framework\TestCase; class SomeClassTest extends TestCase { public function test_someMethod() {} }
Я получаю PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found
…
Класс TestCase
существует с PHPUnit 5.4. Вы можете увидеть его на github, если вы установите 5.3 tag (смотрите папку ForwardCompatibility
), или вы можете сравнить doc для 5.3 и 5.4 в 2. Writing Tests for PHPUnit
секции 2. Writing Tests for PHPUnit
где говорится:
«ClassTest наследует (большую часть времени) от PHPUnit_Framework_TestCase». для PHPUnit 5.3
а также
«ClassTest наследует (большую часть времени) от PHPUnit \ Framework \ TestCase». для PHPUnit 5.4
В моей библиотеке, которую я по-прежнему отмечен как пригодный для использования PHP 5.4, мне пришлось добавить это в свой класс тестового теста верхнего уровня, чтобы преодолеть разницу между именами и именами, в зависимости от того, какая версия PHPUnit будет установлена Composer основанный на версии PHP для исполнения.
/* * Allow for PHPUnit 4.* while XML_Util is still usable on PHP 5.4 */ if (!class_exists('PHPUnit_Framework_TestCase')) { class PHPUnit_Framework_TestCase extends \PHPUnit\Framework\TestCase {} } abstract class AbstractUnitTests extends \PHPUnit_Framework_TestCase {
Это отлично работает на PHP 5.4 (PHPUnit 4.8.34) до PHP 7.1 (PHPUnit 6.0.2).