未找到实体类PHPUnit Test

时间:2013-04-20 19:50:09

标签: php phpunit

以下是文件所在的路径

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实体。

2 个答案:

答案 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') );