PHPUnit无法找到" TestCase"类

时间:2016-10-14 14:05:07

标签: php unit-testing phpunit

要使用项目的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 ...

2 个答案:

答案 0 :(得分:7)

自PHPUnit 5.4以来,存在类TestCase。如果您设置5.3 tag(查找ForwardCompatibility文件夹),您可以在github上看到它,或者您可以在2. Writing Tests for PHPUnit部分中比较5.35.4的文档它说:

“ClassTest从PHPUnit_Framework_TestCase继承(大部分时间)。” for PHPUnit 5.3

“ClassTest从PHPUnit \ Framework \ TestCase继承(大部分时间)。” for PHPUnit 5.4

答案 1 :(得分: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)。