测试的 TDD 方法问题

TDD approach issue with test

我是 TDD 实践的新手,我想知道我的方法是否适用于特殊情况。

我想编写一个小软件,将一组数组字符串作为参数并拆分该组中的所有字符串。

示例:

{"C - 3 - 3", "M - 5 - 5"} 应该 return {{"C", "3", "3"}, {"M", "5 ", "5"} }

为了解决这个问题,我开始使用带有 TDD 的 StringSplitter 和 StringSplitterTest,以便将一个字符串拆分为一个字符串数组。

之后,我编写了一个 StringGroupSplitter 和 StringGroupSplitterTest(始终使用 TDD 方法)做同样的事情,但使用字符串数组(知道 StringGroupSplitter 具有 StringSplitter 依赖项)。

所以,我想起了单元测试的 "FIRST" 原则,尤其是独立性原则,即一个测试不应依赖于另一个测试的结果。

在我的例子中,问题是由于StringGroupSplitter和StringSplitter的依赖关系,如果只有ont测试在StringSplitterTest中失败,那么在StringGroupSplitterTest中的测试也会失败。

所以我的问题如下:我的 TDD 方法是否正确?

提前致谢。

i remembered the "FIRST" principles of unit tests and in particular the principle of independence saying that a test should not depend on the result of another test.

重要的想法是测试应该产生准确的测量值,而不管它们的顺序如何 运行。如果我们有一个 "blue" 测试和一个 "orange" 测试,那么我们应该能够 运行 单独测试,或者以任意顺序进行两个测试,并获得关于我们是否正确的准确信息实施符合我们的规范。

过去,耦合测试是一种常见的反模式。当所有测试都成功时,一切就都好了。但是,如果一个测试失败了,就会出现一连串不可信的结果,原因很简单,因为后续测试的前提条件可能无法满足。

您对字符串拆分器的描述并不表明您在这方面有问题。如果 StringGroupSplitter 依赖于 StringSplitter 的一部分,而你在该部分引入了一个错误,那么多次测试失败是正常的。当我们担心反模式时,这不是我们的意思。