我刚开始接触PHPUnit和单元测试,于是通过composer安装了PHPUnit和phar。一切进行得很顺利,直到我开始尝试执行我的简单测试时,出现了错误。我使用的是PhpStorm,可以看到所有的类都已自动加载,但当我尝试启动测试时,出现了错误:
Fatal error: Class 'PharIo\Manifest\Simple' not found in C:\xampp\htdocs\mydocs\
我不明白为什么他在比PHPUnit存在的文件夹更高的文件夹中寻找It?
我试图配置composer.json中的autoload部分,并检查phpunit.xml中的设置,但一切都没有用。
添加:
我必须重新安装没有PharIO的PHPUnit,所以现在我有了一点进展,现在我可以通过将require_once行与被测试类的名称配对来测试我的类。它看起来像:
require_once '../src/Simple.php';
class SimpleTest extends PHPUnit_Framework_TestCase
{
public function testAdd() {
$sum = new Simple();
$this->assertEquals(5, $sum->add(2, 3));
}
}
所以我的简单类是:
class Simple {
public function add($a, $b) {
return (int) $a + (int) $b;
}
}
当然,我想要使用命名空间。我尝试基于这个问题做出一些改变:Autoloading classes in PHPUnit using Composer and autoload.php(我甚至尝试使用那个存储库进行测试,但仍然存在错误),但是对我来说都没有用。我尝试像这样编辑我的composer.json文件中的自动加载部分:
"autoload": {
"psr-4": {
"app\\": "src/"
}
},
但是仍然存在一个错误,换句话说就是自动加载无法识别它。我已经使用相同的设置创建了phpunit.xml和phpunit.dist.xml文件。
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/3.7/phpunit.xsd"
backupGlobals="true"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
bootstrap="./tests/bootstrap.php">
<testsuites>
<testsuite name="The project's test suite">
<directory>./tests</directory>
</testsuite>
</testsuites>
</phpunit>
我也制作了tests/bootstrap.php文件,并且添加了:
require_once '../vendor/autoload.php';
phpunit.xml.dist
文件?如果是,你可以贴出来吗? - motanelu