1

以下是文件所在的路径,

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 Error: Class 'Tests\TW\Talk\Enity\Talk' not found。

作为参考,我指的是具有相似结构的 php-object-freezer-master。

知道为什么 TalkTest 无法找到 Talk 课程吗?

phpunit 命令正在尝试在 Tests 文件夹中查找 Talk 实体。

4

2 回答 2

1

将 phpunit.xml.dist 更改为

<phpunit bootstrap="loader.php">
  <testsuites>
    <testsuite name="TW_Talk">
      <directory>Tests</directory>
    </testsuite>
  </testsuites>
</phpunit>

和加载器文件,

<?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>

这没用。

于 2013-04-21T12:27:51.267 回答
0

检查您的 include_path:

echo get_include_path();

它应该包含您TW/Talk/Entity/Talk.php的相对目录。如果它不存在,那么您必须将其添加到 PHPUnit 的引导程序中php.ini或添加到 PHPUnit 的引导程序中。

您可以通过以下方式轻松测试 PHP 是否可以使用包含路径找到您的文件:

var_dump( stream_resolve_include_path('TW/Talk/Entity/Talk.php') );
于 2013-04-20T20:07:29.920 回答