【发布时间】:2019-01-06 09:50:16
【问题描述】:
目前,我有一个基础测试类,我的测试应该扩展:
<?php
namespace BlaBla;
class BasicTestCase extends UnitTest {
public function testPage()
{
$this->assertTrue(True);
}
}
在我的测试课中:
<?php
use BlaBla\BasicTestCase;
class BasicTest extends BasicTestCase {
}
我的问题是,如果我运行 phpunit 并且我想测试 BasicTest,我总是会收到错误 BasicTestCase class not found。
经过搜索,我了解到phpunit没有使用composer,但是我无法解决这个冲突。
更新:
使用 require_once 或 composer dump-autload 只会产生相同的错误(找不到类 Base)。
还为该类提供了一个命名空间,并没有解决问题(总是同样的错误)。
这里是 phpunit.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="phpunit.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
<testsuite name="Core Test Suite">
<directory>./vendor/ipo/prodis-core/tests/</directory>
</testsuite>
</testsuites>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite_testing"/>
</php>
composer.json 太长了,我这里加了import:
"autoload-dev": {
"classmap": [
"tests/AppTestCase.php",
"tests/AppTestCaseClassic.php",
"vendor/ipo/prodis-core/tests/TestCase.php"
]
},
对于结构,我添加了第二个类BasicTest,在Laravel 的文件夹tests 下,Services\Client\Testing 下。
我注意到的是 phpunit 总是在 BasicTest 的同一位置搜索 Base class。
【问题讨论】:
-
composer dump-autoload -
你可以简单地
require_once你的其他源文件。 -
@J.Doe
composer dump-autoload没有帮助 -
@NigelRen 也
require_once没有帮助 -
如果您遇到自动加载问题,请分享您的
composer.json、phpunit.xml和测试目录结构,以便我们向您推荐解决此问题的方法
标签: php laravel unit-testing phpunit