PHPUnit TDD,PHP致命错误:调用未定义的方法

FMa*_*008 2 php tdd phpunit undefined

我正在使用PHPUnit开始一个TDD项目,这真的让我很烦恼.

只要不实现所有类和方法,似乎所有测试都无法运行.如果尚未实现类或方法,如何进行测试继续事件?

谢谢.

编辑:"在编写测试时,测试套件是否失败,这不是TDD的重点吗?" 是的,当然,但我希望全球范围内看到这个项目.假设我们已经编写了1000个测试,并且第一个运行会产生致命的错误.但是,当我们来实现代码时,我们并不幸运,那部分将是最后实现的部分之一.我不想开发"盲目",只有当所有致命错误都被清除时才能运行我的测试套件.

所以,是的,他们的失败测试与整个测试过程之间的巨大差异因为在这种状态下正常的致命错误而停止/死亡.

作为一个工作环节,我们在开始编写测试之前创建了类骨架.

edo*_*ian 5

在编写测试时,测试套件是否失败并不是TDD的重点?

我想你的观点是它死于致命错误,而不是只显示红色的"我失败"栏.非常有意思的一点,我正在使用phpunit进行TDD,但从来没有让我烦恼过.

首先要考虑的是--process-isolation.

例:

让我们假设一个看起来像这样的测试类:

<?php

class fooTest extends PHPUnit_Framework_TestCase {

    public function testA() {
        $x = new a();
    }

    public function testB() {
        $this->assertTrue(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用普通跑步者phpunit test.php:

PHPUnit 3.5.12 by Sebastian Bergmann.

Fatal error: Class 'a' not found in /home/mcsvnls/mep.php on line 6
Run Code Online (Sandbox Code Playgroud)

但是当使用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.
Run Code Online (Sandbox Code Playgroud)

现在第二个测试被执行并通过了