我使用的是XAMPP 1.8.1,Windows 7 64位,Netbeans IDE 7.4 我已经安装了PHPUnit。 当我运行代码时,我收到以下错误。
致命错误:第6行的D:\ xampp \ htdocs \ PHPUnit \ index.php中找不到类'PHPUnit_Framework_TestCase'
守则是:
<?php
class StackTest extends PHPUnit_Framework_TestCase {
public function testPushAndpop() {
$stack = array();
$this->assertEquals(0, count($stack));
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack) - 1]);
$this->assertEquals(1, count($stack));
$this->assertEquals('foo', array_pop($stack));
$this->assertEquals(0, count($stack));
}
}
?>
我在环境变量PATH中添加了 D:\ xampp \ php 有谁建议我如何解决这个问题? 提前谢谢。
答案 0 :(得分:4)
您尚未提及您使用的是哪个版本的PHP,但如果它是3.5或更高版本,则只需添加
require_once 'PHPUnit/Autoload.php';
在代码的顶部提取所需的文件。
如果没有,请使用:
require_once 'PHPUnit/Framework/TestCase.php';
您不太可能使用3.5之前的版本,但为了以防万一,我已将其包含在内。
答案 1 :(得分:3)
您是否尝试在网络浏览器中运行测试?这困惑了我一段时间。编写PHPUnit测试以在命令行上运行。
答案 2 :(得分:2)
我认为您只需要获取最新版本的PHPUnit,而不包含下面提到的任何文件。当我升级到最新版本但运行旧单元测试时,这对我有用:
require_once 'PHPUnit/Framework/TestCase.php';
删除此行可解决问题。
答案 3 :(得分:2)
对于新的PHPUnit版本,您需要在使用TestCase
PHPUnit_Framework_TestCase
而不是use PHPUnit\Framework\TestCase;
旧的和被掠夺的方式:
// No namespace in this old method
class ClassATest extends PHPUnit_Framework_TestCase {
}
6.x版本中采用的新方式:
// Namespace used in this new method
use PHPunit\Framework\TestCase;
class ClassATest extends TestCase {
}
如果你没有使用这种新方法,你将会遇到困难。采用它,这将解决您的问题。
答案 4 :(得分:1)
对于那些在更新phpunit到版本6发布后到达这里的人。
您需要重命名该类,如:
\PHPUnit_Framework_TestCase
至\PHPUnit\Framework\TestCase
答案 5 :(得分:0)
这有两个层次的答案。
对于某些人来说,第一个问题是,虽然类名在PHP中是个例句,但自动加载器有时不是,因此将需要使用父类的正确名称: PHPUnit_Framework_TestCase
第二个问题是PHPUnit 6与自身不兼容。如果您和许多其他人一样,需要能够编写适用于任一版本的测试用例,请创建一个包含以下内容的新包含文件:
<?php
if (!class_exists('PHPUnit_Framework_TestCase') &&
class_exists('\\PHPUnit\\Framework\\TestCase')) {
abstract class PHPUnit_Framework_TestCase extends \PHPUnit\Framework\TestCase {
}
}
然后,将此文件包含在每个测试用例的顶部。测试用例本身继续继承上述类,例如,我的代码:
class Minijson_Tests extends PHPUnit_Framework_TestCase {
与之前的建议相反,PHPUnit 4.2.6(Debian jessie)和6.5.5(Debian sid)证明包括PHPUnit/Autoload.php
或PHPUnit/Framework/TestCase.php
是不必要的。也没有必要写出类似建议中包含的phpunit.xml
,bootstrap.php
等。