假设您有以下逻辑:
processMissing(masterKey, masterValue, p.getPropertiesData().get(i).getDuplicates());
public StringBuffer processMissing(String keyA, String valueA, Set<String> dupes) {
// do some magic
}我想为jUnit编写一个processMissing测试,测试它在事件dupes中的行为为null。
我在这里做的对吗?我应该检查方法在null下是如何处理的,还是应该测试方法调用以确保null从未被发送?
一般来说,这里的方法是什么?我们不能为每件事测试一切。我们也不能处理所有可能的案子。
在决定编写哪些测试时,人们应该如何思考?
我是这么想的:
这是正确的思考方式吗?
谢谢,请告诉我
发布于 2010-09-03 18:49:53
首先,定义null是否为参数的有效值。
如果是,那么肯定会用null测试该方法的行为。
如果不是,那么:
静态分析工具FindBugs支持诸如@NonNull之类的注释,并有一些有限的数据流分析。
我个人认为,在大型Java代码库中,总是编写和维护对空和对应的非本地单元测试的显式检查是不必要的。
发布于 2010-09-03 16:56:44
如果您想确保人们不使用null参数调用API,您可能需要考虑使用注释来显式化,JSR 305将讨论这一点,并在番石榴中使用它。否则,您将依赖于阅读javadoc的用户。
至于测试,您不能处理所有可能的情况,假设您不想支持空值,我想说的是,您可能想抛出一个IllegalArguemntException而不是一个NullPointerException,这样您就可以清楚地知道什么是null,然后只需要测试抛出的异常--参见JUnit文档。
https://stackoverflow.com/questions/3637771
复制相似问题