PHPUnit错误 - 找不到类

时间:2011-05-13 19:21:30

标签: php phpunit

我刚刚在我的系统上安装了PHPUnit 3.5,从3.4升级它,我在使用新版本时遇到了一些麻烦。当我尝试运行测试时,我总是得到相同的输出。当我尝试在命令行上运行PHPUnit手册example 4.1中的StackTest示例时,我得到了以下内容:

> phpunit StackTest

X-Powered-By: PHP/5.2.17
Content-type: text/html

PHPUnit 3.5.13 by Sebastian Bergmann.

Class StackTest could not be found in StackTest.php.

更糟糕的是,当我尝试从网络浏览器运行它时,我得到以下输出:

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /path/to/tests/StackTest.php on line 2 

有谁知道如何设置它?感谢。

8 个答案:

答案 0 :(得分:4)

我遇到了您在Windows上描述的问题。 问题是在第131行的文件pear \ PHPUnit \ Runner \ StandardTestSuiteLoader.php中,它是由条件中的文件名中的不同驱动器字母大小写引起的

if ($class->getFileName() == realpath($suiteClassFile)) {

我的简单修复是将此行更改为不区分大小写

if (strtolower($class->getFileName()) == strtolower(realpath($suiteClassFile))) {

答案 1 :(得分:1)

听起来好像PHPUnit不在你的包含路径上。要轻松测试,请尝试以下方法:

$ phpunit --include-path /path/to/PHPUnit StackTest 

答案 2 :(得分:1)

我认为您的PHPUnit类名为StackTest,而您要测试的类也名为StackTest。这将导致PHPUnit中的路径冲突。

让这两个名字不同,你就可以解决这个问题了。

答案 3 :(得分:1)

phpunit MyTestClass

就我而言

  • MyTestClass.php应该在项目主目录中
  • 它应该以长php开放标记(<?php,而非<?
  • 开头
  • 它应包含class MyTestClass extends PHPUnit_Framework_TestCase {

我知道这很可能不是最好的方式,只是指一个初学者开始。

答案 4 :(得分:0)

尝试

pear upgrade pear

(如果要求您进行频道升级,请执行此操作)

然后

pear install --force --alldeps phpunit/phpunit

然后再试一次。

3.5升级与错误的梨安装程序相结合(1.9.1有一个有点烦人的错误,所以确保你真的在1.9.2)有时会很痛苦。

答案 5 :(得分:0)

在我的情况下,这个问题是由于在源文件中通过require_once包含PHPUnit引起的:

require_once 'phar://phpunit.phar';

删除该行使我的测试用例可以运行。

答案 6 :(得分:0)

我能够解决问题。这是我加载课程的结果。我在参数数组中使用了我的参数,因此它起作用了。但是我必须先修复类路径等很多其他问题。要查看有效的解决方案,请查看此处(http://www.siteconsortium.com/h/p1.php?id=php002)。

$command = new PHPUnit_TextUI_Command();
$command->run(array('test', 'testCase', 'c:\workspace\project\testCase.php'), true);

答案 7 :(得分:0)

当您忘记让测试类扩展PHPUnit TestCase类时,也会导致此错误,例如

class MyTestClass extends \PHPUnit\Framework\TestCase { ...