如何正确地对不平等进行单元测试

时间:2019-02-13 22:28:21

标签: c# unit-testing

因此,单元测试的目标之一是确保将来的更改/重构不会破坏现有功能。假设我们有以下方法:

public bool LessThanFive(double a) {
  return a < 5;
}

进行uni测试的一种方法如下:

public bool LessThanFiveTests_True() {
  const double a = 4;
  Assert.IsTrue(LessThanFive(a))
}

此单元测试的问题在于,如果以后有人用<方法将<=更改为LessThanFive,则测试将通过。

如果我们拥有DateTime而不是double呢?

1 个答案:

答案 0 :(得分:1)

您的假设似乎是您编写了一个测试,并且该测试捕获了所有可能的错误。相反的情况更接近于事实:对于每个潜在的错误,您都需要进行一次测试才能发现它。当然,在实践中,很多测试都会捕获许多潜在的错误,但是我有点夸张地传达了这个想法。

因此,要捕获<变成<=的潜在错误,您需要第二个测试用例,尝试用5进行功能。顺便说一句,顺便说一句。所谓的边界测试,边界测试是一种导出一组有用的测试用例的众所周知的方法。

还有更多的测试设计技术,例如,等效类划分,分类树,基于覆盖率的测试等。这些方法的基本目标是指导您开发测试套件,理想情况下,针对每个潜在的bug进行相应的测试存在可以检测到该错误的情况。