home 首页 » 精彩日志 » 日志查看

PHPUnit 3.4中的新特性:Test Dependencies

 2008-11-14 03:40:06 

原文地址:http://sebastian-bergmann.de/archives/826-Test-Dependencies-in-PHPUnit-3.4.html

wulijun01234 译

在7月份,我看到一篇题为“JExample:利用测试用例间的依赖性来辅助错误的定位”。

"一个设计合理的测试套件应该通过高覆盖率来帮助我们发现错误。当测试用例失败的时候,我们希望可以快速地定位错误,通过查看相关的失败用例,找到错误的根源。然而,底层代码变动时引入的细微错误,可能会导致多米诺牌效应,使很多单测用例失败。 这是一个问题,因为修改者追查错误根源时,除了查看分析这些用例外,别无它策。特别是当修改者对测试失败的这部分代码不熟悉的时候,这个任务将变得异常艰巨"

在即将发布的 PHPUnit 3.4 中,我实现了上面论文中提出的一个想法。

让我们来看下面这段代码:

<?php
class DependencyFailureTest extends PHPUnit_Framework_TestCase
{
    public function testOne()
    {
        $this->fail();
    }
 
    /**
     * @depends testOne
     */
    public function testTwo()
    {
    }
}
?>

当我们运行这个测试时,第二个用例会由于所依赖的用例失败而被跳过:

sb@ubuntu ~ % phpunit --verbose DependencyFailureTest
PHPUnit 3.4.0-dev by Sebastian Bergmann.

DependencyFailureTest
FS

Time: 0 seconds

There was 1 failure:

1) testOne(DependencyFailureTest)
Failed asserting that <boolean:false> is true.
/home/sb/DependencyFailureTest.php:6

There was 1 skipped test:

1) testTwo(DependencyFailureTest)
This test depends on "DependencyFailureTest::testOne" to pass.

FAILURES!
Tests: 2, Assertions: 0, Failures: 1, Skipped: 1.

这个新特性的一些细节:

  • 一个测试可以有多个@depends 注释。
  • @depends method 引用当前类中的method()方法。
  • @depends class::method 引用class::method()方法。
  • PHPUnit 不会改变测试用例的运行顺序,需要自己保证当前测试所依赖的测试已经在此之前运行过。

请测试这个新特性并反馈它的实用性和可用性。

收藏:

发表评论:
大名:*
网址:   http://sitename
评论:*