Alv*_*vin 118 php fatal-error classnotfoundexception
为什么我收到这个PHP错误?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
Run Code Online (Sandbox Code Playgroud)
sha*_*adi 218
对于那些在将phpunit更新到2017-02-03上发布的版本6或更高版本后到达此处的人(例如使用作曲家),您可能会收到此错误,因为phpunit代码现在是命名空间(检查更改日志).
您将需要重构之类的东西\PHPUnit_Framework_TestCase
来\PHPUnit\Framework\TestCase
def*_*nes 70
该PHPUnit文档 说过去常说,包括/需要的PHPUnit/Framework.php,如下所示:
require_once ('PHPUnit/Framework/TestCase.php');
Run Code Online (Sandbox Code Playgroud)
UPDATE
从PHPUnit 3.5开始,有一个内置的自动加载器类可以为您处理:
require_once 'PHPUnit/Autoload.php';
Run Code Online (Sandbox Code Playgroud)
感谢凤凰城指出这一点!
Jij*_*rai 34
对于更高版本的phpunit,例如6.4 你必须使用命名空间PHPUnit\Framework\TestCase
使用TestCase而不是PHPUnit_Framework_TestCase
// use the following namespace
use PHPUnit\Framework\TestCase;
// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {
}
Run Code Online (Sandbox Code Playgroud)
小智 13
您可能会因为命名文件而收到此错误.如果是这样,您需要通过在其前面加上反斜杠来指定PHPUnit_Framework_TestCase在全局命名空间中:
namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}
Run Code Online (Sandbox Code Playgroud)
Nin*_*pac 10
我在PHP5上运行PHPUnit测试,然后,我也需要支持PHP7.这就是我做的:
在composer.json中:
"phpunit/phpunit": "~4.8|~5.7"
Run Code Online (Sandbox Code Playgroud)
在我的PHPUnit引导程序文件中(在我的例子中/tests/bootstrap.php
):
// PHPUnit 6 introduced a breaking change that
// removed PHPUnit_Framework_TestCase as a base class,
// and replaced it with \PHPUnit\Framework\TestCase
if (!class_exists('\PHPUnit_Framework_TestCase') && class_exists('\PHPUnit\Framework\TestCase'))
class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase');
Run Code Online (Sandbox Code Playgroud)
换句话说,这适用于最初为PHPUnit 4或5编写的测试,但之后也需要在PHPUnit 6上工作.
您只需安装PHPUnit即可运行命令(https://github.com/sebastianbergmann/phpunit/#php-archive-phar):
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit
Run Code Online (Sandbox Code Playgroud)
运行单一测试
然后运行PHPunit测试:
phpunit test.php
Run Code Online (Sandbox Code Playgroud)
测试文件的内容如下:
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
public function testSave()
{
}
}
Run Code Online (Sandbox Code Playgroud)
运行测试套件
测试套件的配置:demosuite.xml.demo
是包含所有测试的目录.测试文件必须命名为*_test.php
(suffix
).
<testsuites>
<testsuite name="DemoTestSuite">
<directory suffix="test.php">demo</directory>
</testsuite>
</testsuites>
Run Code Online (Sandbox Code Playgroud)
测试套件使用以下命令运行:
phpunit -c demosuite.xml --testsuite DemoTestSuite
Run Code Online (Sandbox Code Playgroud)