测试用例中的测试是否相互依赖是一种好的做法?

时间:2013-04-23 23:50:52

标签: unit-testing phpunit testcase

我有一个我想测试的课程:

class DocumentProcessor{

  public function write(){

  }

  public function read(){

  }
}

我有一个简单的测试用例:

class ClientTest extends \PHPUnit_Framework_TestCase
{
    public function testWrite(){

    }

    public function testRead(){

    }
}

在这种情况下,testRead()可以依赖于testWrite()已写入的数据吗?或者更好的做法是让testRead()设置自己的数据并从中读取数据?后一种方法看起来似乎有点重复,但可以自己测试testRead()

3 个答案:

答案 0 :(得分:1)

我认为两种类型都是有益的。独立编写时,测试可以更精细,每个测试都有趣的正常和边缘情况等等。但是,集成测试验证读者可以读取作者写的内容总是好的。当输出格式发生变化(并且始终如此)以确保读取器和写入器都得到更新时,这尤其有用。

如果您必须支持读取read()方法不再生成的旧/遗留格式输入,则可能还需要单独测试write()

答案 1 :(得分:0)

独立测试最好,或者至少以自下而上的方法测试。您可以使用testRead测试testWrite,只要您已经证明testRead独立于testWrite工作(等等)。

答案 2 :(得分:0)

大型测试用例/套件可能需要一段时间才能执行。因此,通常测试工程师会尽量避免冗余。例如,他们通常避免测试get / set方法,因为它们用于其他测试。

但我只是报告了一个常见的做法 - 就个人而言,我对这个话题没有强烈的看法。