phpunit 说我有 class 的双重定义

phpunit says I have double definitions of class

我有几个测试文件,其中一个文件将被其他人继承。

这是父文件:

<?php

namespace Initial\Reports\Tests;

use Illuminate\Database\Eloquent\Model;
use Initial\Reports\DataFetcher;

const DONT_CARE = true;

class ReportTest extends \TestCase {

}

和所有其他测试继承自上述文件

它们都位于同一个文件夹中。

当我 运行

phpunit path/to/folder/

我明白了

PHP Fatal error:  Cannot redeclare class Initial\Reports\Tests\ReportTest in /Users/tzookb/Sites/lps.core/app/initial/Reports/tests/ReportTest.php

听起来您正在对包含您的 class 的文件执行多个 includeinclude 导致 PHP 的行为就像包含文件的内容只是在 include 语句所在的位置键入一样。多做一次,你就会有两个 class.

的定义

您应该使用 (1) an autoloader function (see PSR-4) 或 (2) 使用 require 而不是 include

当然,另一种可能性是您确实有两个 class 定义,在这种情况下您需要重命名一个。

是因为我测试的命名问题parent:

ReportTest

所以 phpunit 将其读取为另一个测试 class。

我改成了

ReportTestCase

而且 phpunit 没有发现它作为测试,而且一切都很好。