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 的文件执行多个 include
。 include
导致 PHP 的行为就像包含文件的内容只是在 include
语句所在的位置键入一样。多做一次,你就会有两个 class.
的定义
您应该使用 (1) an autoloader function (see PSR-4) 或 (2) 使用 require
而不是 include
。
当然,另一种可能性是您确实有两个 class 定义,在这种情况下您需要重命名一个。
是因为我测试的命名问题parent:
ReportTest
所以 phpunit 将其读取为另一个测试 class。
我改成了
ReportTestCase
而且 phpunit 没有发现它作为测试,而且一切都很好。
我有几个测试文件,其中一个文件将被其他人继承。
这是父文件:
<?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 的文件执行多个 include
。 include
导致 PHP 的行为就像包含文件的内容只是在 include
语句所在的位置键入一样。多做一次,你就会有两个 class.
您应该使用 (1) an autoloader function (see PSR-4) 或 (2) 使用 require
而不是 include
。
当然,另一种可能性是您确实有两个 class 定义,在这种情况下您需要重命名一个。
是因为我测试的命名问题parent:
ReportTest
所以 phpunit 将其读取为另一个测试 class。
我改成了
ReportTestCase
而且 phpunit 没有发现它作为测试,而且一切都很好。