【问题标题】:PHPUnit error - Class could not be foundPHPUnit 错误 - 找不到类
【发布时间】:2022-04-06 20:51:37
【问题描述】:

我刚刚在我的系统上安装了 PHPUnit 3.5,从 3.4 升级它,但我在使用新版本时遇到了一些问题。当我尝试运行测试时,我总是得到相同的输出。这是我尝试在命令行上运行 PHPUnit 手册中的 StackTest 示例时得到的结果,example 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.

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

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

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

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:
      phpunit MyTestClass
      

      就我而言

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          试试

          pear upgrade pear
          

          (如果它要求您升级频道,请这样做)

          然后

          pear install --force --alldeps phpunit/phpunit
          

          然后再试一次。

          3.5 升级加上一个有问题的 pear 安装程序(1.9.1 有一个有点烦人的错误,所以请确保你真的在 1.9.2 上)有时会很痛苦。

          【讨论】:

            【解决方案5】:

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

            require_once 'phar://phpunit.phar';
            

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

            【讨论】:

              【解决方案6】:

              我能够解决问题。这是我如何加载课程的结果。我像这样在参数数组中使用了我的参数并且它起作用了。但是我必须首先修复类路径等许多其他问题。要查看有效的解决方案,请查看此处 (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】:

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

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

                【讨论】:

                  【解决方案8】:

                  听起来 PHPUnit 不在您的包含路径中。要轻松测试这一点,请尝试以下操作:

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

                  【讨论】:

                  • 不幸的是,这不起作用。我尝试将 /path/to/PHPUnit 替换为 phpunit 应用程序和 PHPUnit 支持文件(PEAR 放入不同目录)的路径。没有运气。
                  【解决方案9】:

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

                  #4105: 弃用单个文件中的多个测试用例类,并且测试用例类名与文件名不同

                  所以类名 PluginTest 的 test-plugin.php 将因此错误而失败。要修复它,您需要将文件重命名为 PluginTest.php。

                  IMO 错误消息。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2017-06-08
                    • 2022-01-02
                    • 2013-09-27
                    • 2013-01-04
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-07-22
                    相关资源
                    最近更新 更多