假设您有以下逻辑:
processMissing(masterKey, masterValue, p.getPropertiesData().get(i).getDuplicates());
public StringBuffer processMissing(String keyA, String valueA, Set<String> dupes) {
// do some magic
}
我想为 processMissing 编写一个 jUnit 测试,测试其在事件 dupes 中的行为为 null。
我在这里做的事情对吗?我应该检查方法在 null 下的处理方式,还是测试方法调用以确保永远不会发送 null?
一般来说,这里的做法是什么?我们不能测试所有的一切。我们也无法处理所有可能的情况。
在决定编写哪些测试时应该如何思考?
我是这样想的:
- 我对方法有一定的期待
- 测试应确认定义我的期望并确认方法在该条件下有效
这是正确的思考方式吗?
谢谢,请告诉我
最佳答案
首先,定义 null 是否为参数的有效值。
如果是,那么肯定会用 null 测试方法的行为。
如果不是,则:
- 通过参数文档指定该约束。
- 对该参数本身的约束进行注释(使用与下面的工具兼容的注释)。
- 使用静态分析工具验证从未传递 null。
- 除非您正在编写代码来检查无效值,否则不需要对无效值进行单元测试。
静态分析工具FindBugs支持@NonNull 等注释,具有一些有限的数据流分析。
我个人认为在大型 Java 代码库中总是编写和维护对 NULL 和相应的非本地单元测试的显式检查会不必要地昂贵。
关于java - jUnit 测试精神,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637771/