我目前正在处理Lucene索引,并且正在抓住关于"正确"如果使用TDD则接近。
要做到这一点,你必须创建一个IndexWriter,根据一个简单的文本集合(字符串)生成一个索引,这些文本是标记化的,词干化的等等。
要在此索引中查找查询,您必须创建DirectoryReader,进行查询,获取匹配等。
因此,在制作我的第一个测试类(JUnit 4)的过程中,我逐个完成了这些步骤,为此过程中的每个步骤创建了一个新的测试方法,最终产生非零数量的命中,如果一切顺利的话。
我遇到的问题是最后一个测试方法执行所有这些步骤:清除索引目录,创建IndexWriter,生成索引等等,最后计算命中数。最后一种方法最终可能被错误的任何方式绊倒。此外,以前的方法似乎都是多余的......!而且没有"嘲笑"机会似乎出现了......
这是"测试套件的候选者"? TDD Pro如何开发"适当的"测试这样的情况?
答案 0 :(得分:1)
在我看来,您提到的最后一种测试方法更多的是集成测试,而不是单元测试。单元测试应该只测试一个非常特定的代码单元(通常是方法或方法的一部分),并且应该模拟与其他类的任何交互,不应该触及数据库,文件系统或者特定单元之外的任何内容。正在测试的代码。听起来你创建的第一个测试是单元测试,最后一个测试是集成测试。可以在两种类型的测试之间进行一些冗余,因为单元测试正在测试非常具体的逻辑和集成测试,测试这些测试之间的相互作用。