如果我的单元测试每个类包含1-2个方法,那可以吗?

时间:2009-10-27 09:21:46

标签: c# unit-testing

当我测试我的简单几何库时,我通常在每个测试类中都有一两个方法。我所检查的是对象是否进行了正确的坐标计算。它没关系(意思是方法的数量)?

4 个答案:

答案 0 :(得分:8)

不要挂断方法的数量。只需考虑代码失败的方式并添加测试,最好是单独的方法,就像你想到的那样。

单独方法的原因主要是允许每个测试只关注代码的一个方面,从而使测试代码简短易懂。

让测试方法执行多个断言也是可以接受的,但这些断言应该再次检查代码的类似方面。

在某些情况下,测试代码可能需要更复杂,例如:调用辅助方法的方法较长,但通常可以避免这种情况。

我在单元测试中读到的一本很好的实用书是Pragmatic Unit Testing in C# with nUnit。它为许多问题提供了方便的指导。

答案 1 :(得分:4)

没有固有的问题,也没有表明测试气味本身。

通常,在类中安排测试用例有几种不同的模式。书xUnit Test Patterns列出了其中几本:

  • 每个类的测试用例类
  • 每个功能的测试用例类
  • 每个灯具的测试用例类

通常,最常见的模式是每个类的Testcase类,这意味着您有一个包含所有针对相同被测系统(SUT)的测试用例的类。这有时会导致小型测试类,但这不是问题。

答案 2 :(得分:2)

这很好 - 这不是关于百万次测试 - 而是关于获得合理的覆盖率。如果您以后发现了一个错误,您可以添加一个新的测试,在修复之前公开该错误,以便您的测试随着时间的推移而变得更好。

答案 3 :(得分:0)

我的2c / 2p:

正如其他人所说 - 它不是关于测试的特征点的数量,而是关于每个特征的隔离。因此,我会对每个测试中的依赖关系保持警惕 - 如果您依赖于一个特性来生成另一个特征在同一测试中使用的结果/状态/结果,那么您有多个可能的失败点。

假设您遵循Arrange / Act / Assert模式,我当然认为在单个操作后对多个对象执行多个断言是可以的。