首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jUnit测试的精神

jUnit测试的精神
EN

Stack Overflow用户
提问于 2010-09-03 16:39:32
回答 2查看 102关注 0票数 3

假设您有以下逻辑:

代码语言:javascript
复制
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从未被发送?

一般来说,这里的方法是什么?我们不能为每件事测试一切。我们也不能处理所有可能的案子。

在决定编写哪些测试时,人们应该如何思考?

我是这么想的:

  1. 我对这种方法有一定的期望。
  2. 测试应该确定我的期望,确认方法在那个条件下工作。

这是正确的思考方式吗?

谢谢,请告诉我

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-03 18:49:53

首先,定义null是否为参数的有效值。

如果是,那么肯定会用null测试该方法的行为。

如果不是,那么:

  • 通过参数文档指定该约束。
  • 对参数本身进行注释(使用与下面工具兼容的注释)。
  • 使用静态分析工具来验证null从未被传递。
  • 除非编写代码检查无效值,否则不需要对无效值进行单元测试。

静态分析工具FindBugs支持诸如@NonNull之类的注释,并有一些有限的数据流分析。

我个人认为,在大型Java代码库中,总是编写和维护对空和对应的非本地单元测试的显式检查是不必要的。

票数 1
EN

Stack Overflow用户

发布于 2010-09-03 16:56:44

如果您想确保人们不使用null参数调用API,您可能需要考虑使用注释来显式化,JSR 305将讨论这一点,并在番石榴中使用它。否则,您将依赖于阅读javadoc的用户。

至于测试,您不能处理所有可能的情况,假设您不想支持空值,我想说的是,您可能想抛出一个IllegalArguemntException而不是一个NullPointerException,这样您就可以清楚地知道什么是null,然后只需要测试抛出的异常--参见JUnit文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3637771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档