我正在使用 PHPUnit 启动一个 TDD 项目,但有些事情确实让我烦恼。
似乎只要所有的类和方法都没有实现,所有的测试就无法运行。 如果类或方法尚未实现,我该如何使测试继续事件?
谢谢。
编辑: “TDD 的重点不就是你的测试套件在编写测试时失败吗?” 是的,当然,但我希望对这个项目有一个全局性的了解。 假设我们已经编写了 1000 个测试,并且运行的第一个测试出现了 fatal error 。 但我们并不幸运,当我们实现代码时,该部分将是最后实现的部分之一。我不想“盲目”开发,只有在所有 fatal error 都被清除后才能运行我的测试套件。
所以,是的,失败的测试与由于在此状态下正常的 fatal error 而停止/终止的整个测试过程之间存在巨大差异。
作为一种工作方法,我们在开始编写测试之前创建了类框架。
最佳答案
TDD 的重点不就是你的测试套件在编写测试时失败吗?
我猜你的观点是它因 fatal error 而终止,而不是只显示红色的“我失败”栏。非常有趣的一点是,我正在使用 phpunit 进行 TDD,但这从来没有困扰过我。
首先想到的是--process-isolation
。
示例:
让我们假设一个测试类如下所示:
<?php
class fooTest extends PHPUnit_Framework_TestCase {
public function testA() {
$x = new a();
}
public function testB() {
$this->assertTrue(true);
}
}
使用普通的运行程序phpunit test.php
:
PHPUnit 3.5.12 by Sebastian Bergmann.
Fatal error: Class 'a' not found in /home/mcsvnls/mep.php on line 6
但是当使用 phpunit --process-isolation test.php
开关时,它看起来像这样:
PHPUnit 3.5.12 by Sebastian Bergmann.
E.
Time: 1 second, Memory: 3.25Mb
There was 1 error:
1) fooTest::testA
RuntimeException: Fatal error: Class 'a' not found in /home/foo/mep.php on line 6
Call Stack:
0.0005 102364 1. {main}() /home/foo/-:0
0.0341 1768644 2. __phpunit_run_isolated_test() /home/foo/-:143
[...........]
FAILURES!
Tests: 2, Assertions: 1, Errors: 1.
现在第二个测试已执行并通过
关于PHPUnit TDD,PHP fatal error : Call to undefined method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339875/