Unit testing TDD-什么';对于这种依赖序列的情况,是什么方法?

Unit testing TDD-什么';对于这种依赖序列的情况,是什么方法?,unit-testing,junit,tdd,Unit Testing,Junit,Tdd,我目前正着手处理Lucene索引,如果使用TDD,我还不知道“正确”的方法 为此,您必须创建一个IndexWriter,根据简单的文本(字符串)集合生成索引,这些文本(字符串)经过标记、词干等处理 要在此索引中查找查询,您必须创建DirectoryReader、进行查询、获取命中率等 因此,在制作我的第一个测试类(JUnit4)的过程中,我一个接一个地完成了这些步骤,为这个过程中的每个步骤制作了一个新的测试方法,如果一切顺利的话,最终会产生非零的点击数 我遇到的问题是,最后一个测试方法执行了所有

我目前正着手处理Lucene索引,如果使用TDD,我还不知道“正确”的方法

为此,您必须创建一个IndexWriter,根据简单的文本(字符串)集合生成索引,这些文本(字符串)经过标记、词干等处理

要在此索引中查找查询,您必须创建DirectoryReader、进行查询、获取命中率等

因此,在制作我的第一个测试类(JUnit4)的过程中,我一个接一个地完成了这些步骤,为这个过程中的每个步骤制作了一个新的测试方法,如果一切顺利的话,最终会产生非零的点击数

我遇到的问题是,最后一个测试方法执行了所有这些步骤:清除索引目录、创建IndexWriter、生成索引等等,最后计算点击次数。最后一种方法最终可能会被任何出错的事情绊倒。此外,以前的方法似乎都是多余的。。。!而且似乎没有“嘲弄”的机会出现


这是“测试套件”的候选者吗?TDD Pro如何为这种情况开发“适当的”测试?

我觉得您提到的最后一种测试方法更多的是集成测试,而不是单元测试。单元测试应该只测试一个非常特定的代码单元(通常是一个方法或一个方法的一部分),并且应该模拟与其他类的任何交互,不应该接触数据库、文件系统或测试中特定代码单元之外的任何东西。听起来您创建的第一个测试是单元测试,最后一个测试是集成测试。这两种类型的测试之间可以有一些冗余,因为单元测试是测试非常特定的逻辑片段,集成测试是测试这些片段之间的交互。

谢谢。。。事实上,在这最后一个测试之前,测试还必须做很多事情:制作索引,并测试它是否可以打开索引进行查询。。。换句话说,大约有4个步骤:第一个测试方法执行1个步骤,第二个执行2个步骤,第三个执行3个步骤,第四个执行4个步骤。没有办法“模拟”这些测试的任何先决条件,因此需要进行相当尴尬的复制。此外,没有办法不接触文件系统。。。所以,是的,这些似乎是集成测试。。。作为一名新手,我只是想知道专业人士是如何处理这种情况的。如果没有办法模拟外部互动,我会感到惊讶。这通常是可能的,只是不总是可行的。您必须始终衡量您从工作中获得的价值,因此在这种情况下,编写集成测试可能是一种方法。从你的描述中我想知道你的测试是否相互依赖。这通常是一种不好的做法,因为它使准确定位错误变得更加困难,尽管可能有一些案例证明了这一点。您还需要确保您的junit版本能够保证运行顺序。再次感谢。。。是的,我目前正在试验@FixMethodOrder(methodsorter.NAME\u)