我是TDD练习的新手,我想知道我的方法是否适合特殊情况。
我想编写一个小的软件,该软件将一组数组字符串作为参数并拆分该组中的所有字符串。
示例:
{“ C-3-3”,“ M-5-5”}应该返回{{“ C”,“ 3”,“ 3”},{“ M”,“ 5”,“ 5”}}}
为了解决这个问题,我从使用TDD的StringSplitter和StringSplitterTest开始,以便仅将一个字符串拆分为字符串数组。
[之后,我对StringGroupSplitter和StringGroupSplitterTest进行编程(总是使用TDD方法),但使用字符串数组(知道StringGroupSplitter具有StringSplitter依赖性)来做相同的事情。
因此,我记得单元测试的“ FIRST”原则,尤其是独立性原则,即一个测试不应依赖于另一个测试的结果。
就我而言,问题在于,由于StringGroupSplitter和StringSplitter的依赖性,如果在StringSplitterTest中只有ont测试失败,则StringGroupSplitterTest中的测试也会失败。
所以我的问题如下:我对TDD的方法正确吗?
提前感谢。
[我记得单元测试的“ FIRST”原则,特别是独立性原则,说一个测试不应依赖于另一个测试的结果。
重要的思想是,无论测试的运行顺序如何,测试都应产生准确的测量结果。如果我们有一个“蓝色”测试和一个“橙色”测试,那么我们应该能够单独运行一个测试,或者以两个顺序运行两个测试,并获得有关我们的实现是否与规范相符的准确信息。
在过去,耦合测试是一种常见的反模式。当所有测试都有效时,一切都很好。但是,如果一个测试失败了,那么将会导致一系列不可信的结果,仅仅是因为后续测试的先决条件可能无法满足。
您对字符串拆分器的描述并不意味着您在这里遇到问题。如果StringGroupSplitter
取决于StringSplitter
的一部分,而您在该部分中引入了错误,则多次测试失败是正常的。当我们担心反模式时,这不是我们要表达的意思。