以下是文件所在的路径
src\TW\Talk\Entity\Talk.php
src\Tests\Talk\Entity\TalkTest.php
src\phpunit.xml.dist
在TalkTest.php中,我已经包含了PHPUnit和实体Talk。
require_once 'TW/Talk/Entity/Talk.php';
require('PHPUnit/Autoload.php');
Class TalkTest extends PHPUnit_Framework_TestCase
{
...
}
在phpunit.xml.dist文件中,我有,
<phpunit>
<testsuites>
<testsuite name="TW">
<file>Tests/Talk/Entity/TalkTest.php</file>
</testsuite>
</testsuites>
</phpunit>
我正在从src目录运行phpunit命令,我收到Fatel错误:类'测试\ TW \ Talk \ Enity \ Talk'未找到的错误。
供参考,我指的是php-object-freezer-master,它具有类似的结构。
知道为什么TalkTest无法找到Talk课程吗?
phpunit命令试图在Tests文件夹中找到Talk实体。
答案 0 :(得分:1)
将phpunit.xml.dist更改为
<phpunit bootstrap="loader.php">
<testsuites>
<testsuite name="TW_Talk">
<directory>Tests</directory>
</testsuite>
</testsuites>
</phpunit>
和loader文件为,
<?php
function tw_test_autoloader($class) {
if(file_exists(__DIR__."\\" . $class . ".php"))
require_once(__DIR__."\\" . $class . ".php");
}
spl_autoload_register('tw_test_autoloader');
为我工作。
但是如果我将目录标签替换为文件
<file>Tests\TW\Talk\Entity\TalkTest.php</file>
它不起作用。
答案 1 :(得分:0)
检查你的include_path:
echo get_include_path();
它应包含TW/Talk/Entity/Talk.php
相对的目录。如果不存在,则必须将其添加到php.ini
或PHPUnit的引导程序。
您可以轻松测试PHP是否可以使用包含路径找到您的文件:
var_dump( stream_resolve_include_path('TW/Talk/Entity/Talk.php') );