C# 带测试的TDD进近问题

C# 带测试的TDD进近问题,c#,unit-testing,oop,testing,tdd,C#,Unit Testing,Oop,Testing,Tdd,我是TDD实践的新手,我想知道我的方法是否适用于特殊情况 我想编写一个小软件,在参数中使用一组数组字符串,并拆分该组中的所有字符串 例如: {“C-3-3”,“M-5-5”}应该返回{{“C”,“3”,“3”},{“M”,“5”,“5”} 通过解决这个问题,我从StringSplitter和StringSplitterTest入手,使用TDD将一个字符串拆分为一个字符串数组 之后,我编写了一个StringGroupSplitter和StringGroupSplitterTest(始终使用TDD方

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

我想编写一个小软件,在参数中使用一组数组字符串,并拆分该组中的所有字符串

例如:

{“C-3-3”,“M-5-5”}应该返回{{“C”,“3”,“3”},{“M”,“5”,“5”}

通过解决这个问题,我从StringSplitter和StringSplitterTest入手,使用TDD将一个字符串拆分为一个字符串数组

之后,我编写了一个StringGroupSplitter和StringGroupSplitterTest(始终使用TDD方法),执行相同的操作,但使用了一个字符串数组(知道StringGroupSplitter具有StringSplitter依赖项)

因此,我记得单元测试的“第一”原则,特别是独立性原则,即一个测试不应该依赖于另一个测试的结果

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

所以我的问题是:我的TDD方法正确吗

提前谢谢

我记得单元测试的“第一”原则,特别是独立性原则,即一个测试不应该依赖于另一个测试的结果

重要的想法是,无论测试的运行顺序如何,测试都应该产生准确的测量结果。如果我们有一个“蓝色”测试和一个“橙色”测试,那么我们应该能够单独运行其中一个测试,或者以任意顺序运行两个测试,并获得关于我们的实现是否符合我们的规范的准确信息

在当时,耦合测试是一种常见的反模式。当所有的测试都成功时,一切都很好。但是,如果一个测试失败,那么接下来会出现一连串不可信的结果,这仅仅是因为后续测试的先决条件可能无法满足


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

独立性的概念是改变测试顺序不应该改变它们是否通过。中断的功能导致多个测试(在多个级别:单元、集成、e2e等)失败是可以的。我建议使用依赖注入独立于任何依赖。然后,您可以为任一组件编写测试,而不会影响另一个组件。感谢您的回复。这完全正确。