我刚接触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”
我哪里错了?
发布于 2013-03-30 22:15:53
即使您使用use
,您仍然必须使用include
、require
、include_once
或require_once
包含文件,或者使用spl_autoload_register
包含文件,如下所示:
spl_autoload_register(function ($class)
{
include '\lib\\' . $class . 'php';
});
然后,当您尝试使用Application\Dir1\File1
时,脚本将自动运行include '\lib\Application\Dir1\File1.php'
发布于 2014-05-01 05:13:47
如果你使用Composer安装了PHPUnit,那么你可以使用Composers自动加载器。最简单的方法是添加:
"autoload":{
"psr-0":{
"your-app-directory":""
}
}
转到composer.json
发布于 2019-02-25 16:11:45
我也有同样的问题。我也在使用composer,唯一能解决这个问题的方法是:
" autoload ":{ "classmap":"namespaceRoot/“}
composer dump-autoload
命令以重新创建自动加载文件(包含所有类映射!)https://stackoverflow.com/questions/15719293
复制相似问题