【发布时间】:2013-03-21 02:26:42
【问题描述】:
我是 PHPUnit 的新手,在设置它以访问我的 PHP 文件时遇到了一些麻烦。我用于我的应用程序的目录结构是这样的:
./phpunit.xml
./lib/Application/
-> Dir1/File1.php (namespace = Application\Dir1)
-> Dir1/File2.php
-> Dir2/File1.php (namespace = Application\Dir2)
./tests/Application/Tests
-> Test1.php (namespace = Application\Tests)
-> Test2.php
在我的 PhpUnit.xml 中,我有:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit verbose="false">
<testsuites>
<testsuite name="Application">
<directory>./tests/Application/Tests</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
<log type="json" target="/tmp/phpunit-logfile.json"/>
</logging>
<filter>
<whitelist>
<directory suffix=".php">./lib</directory>
</whitelist>
</filter>
</phpunit>
在我的一个测试文件中,我打开:
namespace Application\Tests;
use Application\Dir1\File1;
class MyTest extends File1 {}
但它一直在说:
找不到类“Application\Dir1\File1”
我哪里错了?
【问题讨论】:
-
如何从测试文件中加载 Dir1/File1.php?
use声明并不意味着您不需要必要的文件。 -
我尝试使用引用 Autoload.php 的引导文件 - 但我不确定使用什么功能来包含所有必要的文件。我还认为 PHPUnit.xml 会自动在
<filter>节点中包含所需的文件。不是这样吗? -
尝试将
require_once声明放在开头,它应该可以工作。 -
所以对于我写的每个测试,我必须
require_once每个文件?这不会破坏使用命名空间自动加载文件的全部目的吗?似乎有点 hacky...
标签: php namespaces phpunit