我正在尝试使用PHPUnit运行一些单元测试,但是,当我使用命令行进行测试时,我的测试类无法从我的主类中找到命名空间。
这是我的文件夹结构:
data/
src/
Dao/
Entity/
City.php
Facade/
SplClassLoader.php
tests/
Entity/
CityTest.php
bootstrap.php
phpunit.xml
vendor/
composer.json
composer.lock
这是/ src / Entity /
中我的一个类的内容<?php
namespace Entity;
class City
{
/**
* @var int
*/
private $id;
我的phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="../vendor/autoload.php">
<testsuites>
<testsuite name="Application Test">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>
和我的CityTest.php
<?php
class CityTest extends PHPUnit_Framework_TestCase
{
public function testAdd()
{
$city = new Entity\City(1, "London");
}
}
当我运行命令phpunit tests/Entity/CityTest.php
时,我收到此消息错误:
PHP致命错误:未找到“实体\城市”类
我该怎么做才能解决这个问题?
谢谢。
更新
我已经通过一些更新解决了我的问题。这是我的最终文件夹结构:
data/
src/
tests/
vendor/
composer.json*
composer.lock*
phpunit.xml*
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
</phpunit>
composer.json
"require-dev": {
"phpunit/phpunit": "4.8.*"
},
"config": {
"process-timeout": 600,
"preferred-install": "dist",
"github-protocols": ["https"]
},
"autoload": {
"psr-4": {
"": "src/"
}
},
答案 0 :(得分:0)
我们的想法是使用“autoload”将项目的源代码添加到Composer。
请参阅https://getcomposer.org/doc/01-basic-usage.md#autoloading