-1

我一直在阅读包括本网站在内的网络上的相关主题。但我找不到有大量代码来解释相关主题的代码。

我一直在练习 TDD 和单元测试。我想找出在类级别、方法级别方面应该和不应该进行单元测试的内容。例如,我应该测试所有内容(集成测试是为了什么)?在目标方法中,我应该对哪些代码行进行单元测试?在这方面是否有任何好的原则和实践,或者有大量代码示例的好的阅读材料来说明。

这里的主题与服务器端语言有关,例如 C#、Java。

更新

请注意,以下书籍并未涵盖我正在寻找的内容(如果我是正确的)

实用的单元测试

单元测试的艺术

4

2 回答 2

4

从广义上讲,单元测试应该是白盒测试,集成测试应该是黑盒测试。

也就是说,一个单元测试应该依赖于一个代码单元的内部工作,通常是一个方法。作为开发人员,您将通过该方法检查可能的执行路径并为每个路径创建一个测试用例。单元测试也应该单独测试方法。应该模拟任何协作者或输入和输出,以便单元测试仅执行被测方法。

要找到执行路径,您需要考虑方法可能有哪些输入,以及有哪些分支(例如if语句和异常)。例如

public boolean isYes() {
    return someValue.equals("yes");
}

这个方法里面没有if语句,但是它有三个执行路径。

  • 如果someValue"yes"则该方法返回true
  • 如果someValue是其他字符串,如"Yes", "no", "bananas", 或""返回false
  • 如果someValuenull它会抛出一个NullPointerException

在这种情况下,考虑这些执行路径并编写单元测试来涵盖这些情况有助于您考虑该方法可能存在哪些问题。

执行路径访问多个代码单元的测试将是集成测试。您将根据整体输入和输出运行测试。你不在乎它是如何工作的,只是在工作。

就我个人而言,我会根据自己对代码库的了解创建单元测试,并分别为每个方法创建单元测试。我将根据规范和需求中的个别验收标准创建集成测试。

于 2013-03-20T12:05:04.107 回答
0

Pragmatic Unit Testing并不是 Pragamatic 系列中最好的,而且当我几年前阅读它时,nunit 的技术相当轻巧且过时。但它足够便宜,涵盖了原则和实践。

单元测试的艺术也值得一读。

干杯,
贝里尔

于 2013-03-20T12:09:02.927 回答