单元测试 - 用于说明在类/方法级别应该/不应该测试什么的代码示例。

时间:2013-03-20 11:57:51

标签: c# unit-testing

我一直在阅读网站上的相关主题,包括本网站。但我找不到一个有很多代码的人来解释这个问题。

我一直在练习TDD和单元测试。我想找出应该是什么,不应该在类级别,方法级别进行单元测试。例如,我应该测试一切(什么是集成测试)?在目标方法中,我应该对哪些代码进行单元测试?这个领域是否有任何良好的原则和实践,或者包含大量代码示例的优秀阅读材料。

此处的主题涉及服务器端语言,例如C#,Java。

更新

请注意,下面的书籍不包括我要找的内容(如果我是正确的)

Pragmatic Unit Testing

Art of Unit Testing

2 个答案:

答案 0 :(得分:4)

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

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

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

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

此方法中没有if个语句,但它有三个执行路径。

  • 如果someValue"yes",则该方法会返回true
  • 如果someValue是其他字符串,例如"Yes""no""bananas""",则会返回false
  • 如果someValuenull则会引发NullPointerException

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

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

我个人会根据自己对代码库的了解以及每个方法单独创建单元测试。我会根据要求中的规格和个别验收标准创建集成测试。

答案 1 :(得分:0)

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

Art of Unit Testing也值得一读。

干杯,
Berryl