在尝试使用 PHPUnit 作为单元测试库来设置 Eclipse 时,我一直在尝试运行一个简单的测试用例。作为参考,我按照本教程使用 PHPUnit/Xdebug/Makegood 设置 Eclipse,与给出的指南的唯一偏差是为 PHPUnit/Makegood 设置以下配置文件:
config.xml:
<phpunit backupGlobals="true"
backupStaticAttributes="false"
cacheTokens="false"
colors="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
printerClass="PHPUnit_TextUI_ResultPrinter"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader"
strict="false"
verbose="false">
<testsuites>
<testsuite name="My Test Suite">
<directory suffix=".php">/path/to/application/tests/</directory>
</testsuite>
</testsuites>
</phpunit>
现在,问题的根源在于我似乎无法使用 Makegood 从 Eclipse 运行 PHPUnit 测试。我编写的唯一测试(位于名称“test.php”下的“/path/to/application/tests/”文件夹中)如下所示(直接取自PHPUnit 手册):
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
public function testPushAndPop()
{
$stack = array();
$this->assertEquals(0, count($stack));
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertEquals(1, count($stack));
$this->assertEquals('foo', array_pop($stack));
$this->assertEquals(0, count($stack));
}
}
?>
为了运行测试,我右键单击“tests”文件夹并在 Eclipse 中点击“Run All Tests”,它会打印到控制台:
塞巴斯蒂安伯格曼的 PHPUnit 3.7.15。
从 /path/to/application/config.xml 读取配置
时间:0 秒,内存:5.00Mb
未执行任何测试!
现在,当我尝试使用“path/to/application/tests/”目录中的命令“phpunit test.php”从命令行运行这些测试时,我得到以下控制台输出:
塞巴斯蒂安伯格曼的 PHPUnit 3.7.15。
.
时间:0秒,内存:3.25Mb
好的(1 个测试,5 个断言)
很明显,我没有正确地告诉 Makegood 在哪里可以找到测试文件/如何运行测试,但我似乎无法确定如何解决这个问题。毫无疑问,对于所有 PHPUnit 组件如何在 Eclipse 中组合在一起,我的心智模型很糟糕,因此任何有助于我理解架构的帮助将不胜感激。提前致谢!