测试的TDD方法问题

问题描述 投票:0回答:1

我是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的方法正确吗?

提前感谢。

c# unit-testing oop testing tdd
1个回答
0
投票

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

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

在过去,耦合测试是一种常见的反模式。当所有测试都有效时,一切都很好。但是,如果一个测试失败了,那么将会导致一系列不可信的结果,仅仅是因为后续测试的先决条件可能无法满足。

您对字符串拆分器的描述并不意味着您在这里遇到问题。如果StringGroupSplitter取决于StringSplitter的一部分,而您在该部分中引入了错误,则多次测试失败是正常的。当我们担心反模式时,这不是我们要表达的意思。

© www.soinside.com 2019 - 2024. All rights reserved.