Unit testing 单元测试复杂逻辑
对一个相对复杂的方法进行单元测试的最佳方法是什么,其中每个post条件的测试与其他post条件的测试非常相似?先决条件很容易单独测试,但很多设置都是为了确保它们都保持不变,以便可以测试后决条件。我想到的三种方法是:Unit testing 单元测试复杂逻辑,unit-testing,testing,Unit Testing,Testing,对一个相对复杂的方法进行单元测试的最佳方法是什么,其中每个post条件的测试与其他post条件的测试非常相似?先决条件很容易单独测试,但很多设置都是为了确保它们都保持不变,以便可以测试后决条件。我想到的三种方法是: 创建一个可以同时测试所有内容的通用函数,但默认为最简单的场景。此函数将采用标志参数,指示与最简单方案的偏差。然后,为每个post条件(或组合)创建一个单元测试,该测试使用适当的标志调用该函数以获得该post条件的覆盖率。这里的好处是几乎没有代码重复,因此如果被测试的代码发生变化,只需
有什么想法吗?我之前的评论有点开玩笑 从广义上讲,我实际上提倡的是做您列为选项2的事情,然后重构您的测试代码以消除复制修改工作所创建的重复
一旦您对这些都进行了测试,您可能会寻找重构生产代码的方法,将其分解为更小、更易于管理的部分,并使这些部分可重用。但在做出重大改变之前进行测试总是有益健康的。我投票支持第四种选择,可能是第四种选择。您是否评估过您的课程和方法,以确保您坚持单一责任原则?谢谢您的回复。这个类是一个业务逻辑类,我很确定它有一个单一的职责(我没有听说过这个名字),这个方法是一个“Save”方法,它接受一个带有用户数据的transfer对象,用户数据应该转换成(可能是许多相互关联的)域对象,并保存在数据存储中。我将尝试重构设置代码,使其更易于重用。也许问题不在于被测试的方法很复杂,而在于我没有一种简单且可重用的方法来设置测试。你会发现,在实践中,“一件事”可能会被分解成许多事情,所有这些事情都可以是独立的类,有自己的单元测试。谢谢你的回答。这是我倾向于走的方向。