2016-10-14 5 views
8

Для запуска моих тестов с использованием PHPUnit проекта я делаю следующее: php vendor/bin/phpunit tests/SomeClassTest.php, который работает отлично дал следующее объявление класса:PHPUnit не нашел «TestCase» класс

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 ... так PHPUnit 5.4

+0

Какую версию PHPUnit вы используете? – martin

+0

@Martin PHPUnit 4.8.24 – Flawyte

ответ

6

TestCase класса существует. Вы можете увидеть его на GitHub, если вы установите 5.3 tag (ищите ForwardCompatibility папку), или вы можете сравнить документ для 5.3 и 5.4 в разделе 2. Writing Tests for PHPUnit, где он говорит:

«ClassTest наследованным (большая часть времени) от PHPUnit_Framework_TestCase. " для PHPUnit 5,3

и

"ClassTest наследованная (большую часть времени) от PHPUnit \ Framework \ TestCase." для PHPUnit 5.4

3

В моей библиотеке, которую я по-прежнему отмечен как пригодный для использования 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).

Смежные вопросы