【问题标题】:PHP unit - Class 'PHPUnit_Framework_TestCase' not foundPHP 单元 - 未找到“PHPUnit_Framework_TestCase”类
【发布时间】:2017-07-07 15:26:45
【问题描述】:

我知道这个问题已经被问过一百次了,但我是 phpUnit 的新手,我不知道如何使用以前的答案来帮助我的案例

这是我的文件夹结构

    /src/MyDate.php
    /src/Autoload.php

    /tests/MyDateTest.php

    /vendor/phpunit/phpunit

自动加载文件里面有这个

<?php

  spl_autoload_register(
    function($class) {
      static $classes = null;
      if ($classes === null) {
        $classes = array(
          'mydate' => '/MyDate.php'
        );
      }
      $cn = strtolower($class);
      if (isset($classes[$cn])) {
        require __DIR__ . $classes[$cn];
      }
    }  
  );

MyDateTest.php 有这个

<?php

class MyDateTest extends PHPUnit_Framework_TestCase
{
|
|
test be here

当我跑步时

phpunit --bootstrap= src/autoload.php tests/MyDateTest.php

我收到这个错误

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in C:\wamp64\www\datechallange\tests\MyDateTest.php on line 3

我在类似的答案中尝试了所有解决方案。尝试使用该类要求该文件,但随后缺少其他类。我尝试修改自动加载文件以包含 phpunit 库,但要么我做错了,要么不是这样。我试图修改 xml 文件,所以我不需要使用 --bootstrap 但我有同样的错误。

我猜关键是要修改那个 autoload.php 文件,但我不确定如何。

谢谢

【问题讨论】:

    标签: php phpunit composer-php


    【解决方案1】:

    你似乎有两个问题之一,或两个问题。

    • 不使用Composer,这还将提供一个 vendor/autoload.php 文件,该文件将自动拉入通过 composer.json 文件包含的所有文件。
    • 最新版本的 PHPunit (v>6.0) 不再使用长类名。仍然受支持的 v5+ 可以。

    安装 PHPunit 5.7 的推荐机制是:

    composer require --dev phpunit/phpunit:^5.7
    

    或者,它可以作为单个phpunit.phar 下载,可以像任何其他 PHP 脚本一样运行。

    【讨论】:

    • 在最近一次升级之后,是第 2 项对我有帮助。 sed 你的测试套件替换 PHPUnit_Framework_TestCase 为 \phpunit\Framework\TestCase
    【解决方案2】:

    你应该在你的测试文件中试试这个。

    use PHPUnit\Framework\TestCase;
    
    class MyDateTest extends TestCase
    {
    }
    

    这是最新的正确写法。

    【讨论】:

      猜你喜欢
      • 2017-08-06
      • 2019-09-22
      • 2014-03-13
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 2014-06-11
      相关资源
      最近更新 更多