为什么,致命错误:Class';PHPUnit框架测试用例&x27;在…中找不到。。。?
为什么我会遇到这个PHP错误为什么,致命错误:Class';PHPUnit框架测试用例&x27;在…中找不到。。。?,php,fatal-error,classnotfoundexception,Php,Fatal Error,Classnotfoundexception,为什么我会遇到这个PHP错误 Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ... says用于表示包含/需要PHPUnit/Framework.php,如下所示: require_once ('PHPUnit/Framework/TestCase.php'); 更新 从PHPUnit 3.5开始,有一个内置的autoloader类将为您处理此问题: require_once 'PHPUnit/Autoload.ph
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
says用于表示包含/需要PHPUnit/Framework.php,如下所示:
require_once ('PHPUnit/Framework/TestCase.php');
更新
从PHPUnit 3.5开始,有一个内置的autoloader类将为您处理此问题:
require_once 'PHPUnit/Autoload.php';
感谢凤凰城指出这一点 假设: Phpunit(3.7)在控制台环境中可用 行动: 在控制台中输入以下命令:
SHELL> phpunit "{{PATH TO THE FILE}}"
评论:
除非不希望在控制台中运行,否则不需要在PHPUnit的新版本中包含任何内容。例如,在浏览器中运行测试。您只需安装PHPUnit即可运行命令(): 运行单个测试 然后运行PHPunit测试:
phpunit test.php
测试文件的内容如下:
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
public function testSave()
{
}
}
测试套件使用以下命令运行:
phpunit -c demosuite.xml --testsuite DemoTestSuite
您可能会收到此错误,因为您给文件命名了空间。如果是这样,您需要通过在全局名称空间前面加反斜杠来指定PHPUnit_Framework_TestCase:
namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}
我提交了启动对话以进行更正。如果您有Centos或其他Linux发行版,您必须安装phpunit包,我使用yum install phpunit完成了这项工作,而且效果良好。可能您需要添加一个存储库,但我认为它必须与默认的存储库(我有CentOS 7)配合使用。对于那些在2017-02-03发布phpunit至版本6或更高版本后到达这里的人(例如,使用composer),您可能会遇到此错误,因为phpunit代码现在已命名(检查)
您需要将
\PHPUnit\u Framework\u TestCase
之类的东西重构为\PHPUnit\Framework\TestCase
很可能您正在运行WordPress核心测试,并且最近已将PHPUnit升级到版本6。如果是这样,那么PhpUnit中最近对名称空间的更改将破坏您的代码
幸运的是,核心测试有一个补丁可以解决这个问题。它还包括对travis.yml的更改,您的设置中可能没有这些更改;如果是这种情况,则需要编辑.diff文件以忽略Travis修补程序
Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
$cd[WORDPRESS目录]
$patch-p5<变更集_40547.diff
完成此操作后,我的测试再次正确运行。我在PHP5上运行PHPUnit测试,然后,我还需要支持PHP7。这就是我所做的: 在composer.json中:
"phpunit/phpunit": "~4.8|~5.7"
在我的PHPUnit引导文件中(在我的例子中,/tests/bootstrap.php
):
换句话说,这将适用于最初为PHPUnit 4或5编写的测试,但随后也需要在PHPUnit 6上工作。适用于PHPUnit的更高版本,如6.4 您必须使用名称空间PHPUnit\Framework\TestCase
// use the following namespace
use PHPUnit\Framework\TestCase;
// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {
}
使用TestCase代替PHPUnit\u框架\u TestCase
// use the following namespace
use PHPUnit\Framework\TestCase;
// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {
}
我使用ZF2,并在将“PHPUnit\u Framework\u TestCase”替换为“\PHPUnit\Framework\TestCase”时为我工作。注意:命令
php-bin/console-generate:document:crud
也在src/Tests
中创建TestController
,以便在您尝试启动服务器时,如果您没有单元测试
。删除文件并修复它 对我来说,那是因为我跑步
$ phpunit .
而不是
$ phpunit
当我已经在工作目录中配置了一个
phpunit.xml
文件时。我正在windows10上使用php5.6,zend 1.12版本供我添加
需要一次“PHPUnit/Autoload.php”
以前
抽象类Zend_Test_PHPUnit_ControllerTestCase扩展
PHPUnit_框架_测试用例
成功了。我们需要在ControllerTestCase.php文件中添加上述语句
include("vendor/autoload.php");
在我的测试函数顶部。您根本没有提供任何信息。请通过phpunit命令行运行测试。它加载了必要的类。您还可以使用下面答案中的答案来保持代码与PHPUnit 6以及早期版本兼容。PHPUnit 3.5自带了自己的自动加载器,这可能有助于简化操作:
require_once'PHPUnit/Autoload.php'
I concure that require_once('PHPUnit/Autoload.php')是最佳实践。我没有PHPUnit/Autoload.php
和PHPUnit/Framework/TestCase.php
,我的文件夹有点像PHPUnit/Framework/MockObject
,现在我有了php致命错误:require_once():无法打开所需的“PHPUnit/Autoload.php”
请参阅@shadi对PHP6+的回答,如果您这样做:classyournicetest扩展了PHPUnit\u Framework\u TestCase
只需在扩展类前面添加\即可,就像在classyournicetest扩展了PHPUnit\u Framework\u TestCase
中一样-这对我很有效,使用Symfony 2.8
并将phpunit
作为本地依赖项与“phpunit/phpunit”下载到composer文件中:“^4.8”
谢谢,我遇到了这个问题,因为Travis CI在其PHP7版本上使用了最新的phpunit版本。我的解决办法是手动下载一个旧的phar并使用它。它在发行说明的顶部,但我错过了它谢谢你,好的
$ phpunit
include("vendor/autoload.php");