文件夹结构
/app/lib/Helper.php
/tests/HelperTest.php
/vendor/autoload.php
composer.json
{
"require-dev": {
"phpunit/phpunit": "*"
},
"autoload": {
"psr-4": {
"Datapark\\LPS\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Datapark\\LPS\\Tests\\": "tests/"
}
},
}
Helper.php
<?php
namespace lib;
class Helper
{
public function array_get($array, $key, $default = null)
{
// code
}
}
HelperTest.php
<?php
use lib\Helper;
class HelperTest extends \PHPUnit_Framework_TestCase
{
public function test_array_get()
{
$helper = new Helper();
}
}
命令我在服务器上运行 [Debian 8 / PHP7]
phpunit --bootstrap vendor / autoload.php tests
我遇到错误
1)HelperTest :: test_array_get
错误:未找到“lib \ Helper”类
lib \ Helper通过命名空间加载,我的IDE(PhpStorm)也识别它。 已经挣扎了好几个小时而且没有让它发挥作用。
答案 0 :(得分:5)
您的自动加载配置显示:
"Datapark\\LPS\\": "app/"
这意味着:
<{1}}目录中的类具有
app
名称空间前缀。
因此,文件Datapark\LPS\
中的示例类应该具有名称空间app/lib/Helper.php
。因此,您需要将Datapark\LPS\lib
类的名称空间声明更改为:
Helper
您的测试文件夹也存在类似问题。
答案 1 :(得分:4)
我注意到我跑的时候:
$ vendor/bin/phpunit tests
然后我的测试开始起作用了