PHPUnit错误-找不到类

osh3o9ms  于 2022-12-02  发布在  PHP
关注(0)|答案(9)|浏览(166)

我刚刚在我的系统上安装了PHPUnit 3.5,从3.4升级而来,我在使用新版本时遇到了一些问题。当我尝试运行测试时,总是得到相同的输出。下面是我尝试在命令行上运行PHPUnit手册中的StackTest示例(示例4.1)时得到的结果:

> 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.

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

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

有人知道怎么设置吗?谢谢。

bgibtngc

bgibtngc1#

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

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

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

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

wgxvkvu92#

phpunit MyTestClass

就我而言

  • MyTestClass.php应该在项目主目录中
  • 它应该以长的php开始标记(<?php,而不是<?)开始
  • 它应该包含class MyTestClass extends PHPUnit_Framework_TestCase {

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

fnx2tebb

fnx2tebb3#

尝试

pear upgrade pear

(if它要求您进行通道升级)
然后再

pear install --force --alldeps phpunit/phpunit

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

lyr7nygr

lyr7nygr4#

我认为你的PHPUnit类名为StackTest,而你要测试的类也名为StackTest,这将导致PHPUnit中的路径冲突。
让这两个名称不同,你会得到这个解决。

nqwrtyyt

nqwrtyyt5#

在我的例子中,这个问题是通过require_once在源文件中包含PHPUnit引起的:

require_once 'phar://phpunit.phar';

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

wn9m85ua

wn9m85ua6#

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

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

yvt65v4c7#

我能够修复这个问题。这是我加载类的方式造成的。我在参数数组中使用了我的参数,就像这样,它工作了。但是还有很多其他的类路径等问题,我必须首先修复。要查看一个工作的解决方案,请看这里(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);
ekqde3dh

ekqde3dh8#

从PHPUnit 9开始,要求文件名与测试中的类名匹配。

4105:不赞成在单个文件中使用多个测试用例类,并且测试用例类名称与文件名不同

因此,类名为PluginTesttest-plugin.php将失败,并出现此错误。要修复此错误,需要将文件重命名为PluginTest.php
错误的错误消息IMO。

lxkprmvk

lxkprmvk9#

听起来PHPUnit并不在你的include路径上。

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

相关问题