PHPUnit:错误测试失败的正确模式?

时间:2014-06-23 09:34:52

标签: php unit-testing phpunit

我已经找到了一个本机解决方案,以便在遇到目标类/对象中没有定义测试的方法时让PHPUnit失败。到目前为止,我还没有找到办法做到这一点。

与此同时,我自己推出的解决方案是在我的所有测试类的顶部包含以下测试:

public function test_MethodCoverage ()
{
    $Class = new ReflectionClass($this->_className);
    $methods = $Class->getMethods();

    foreach ( $methods AS $v ) {
        $this->assertTrue(
            method_exists( $this, 'test'.ucfirst($v->name) ),
            'Test for method '. $v->name .' does not exist'
        );
    }
}

注意:$this->_className是在setUp()中创建的属性,其中包含目标类路径。

我想知道,如果不手动完成此功能,是否有更合适/原生的方式?

由于

1 个答案:

答案 0 :(得分:0)

如果您希望所有方法都经过测试,那么您的解决方案非常好。但是必须对某些私有方法进行间接测试,因此您应该使用代码覆盖工具来分析测试的方法和未测试的方法。

使用phpunit代码coverabe工具非常简单。例如:

phpunit --coverage-html ./report BankAccountTest

来源:http://phpunit.de/manual/3.7/en/code-coverage-analysis.html