java - jUnit 测试精神

标签 java junit methodology

假设您有以下逻辑:

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?

一般来说,这里的做法是什么?我们不能测试所有的一切。我们也无法处理所有可能的情况。

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

我是这样想的:

  1. 我对方法有一定的期待
  2. 测试应确认定义我的期望并确认方法在该条件下有效

这是正确的思考方式吗?

谢谢,请告诉我

最佳答案

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

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

如果不是,则:

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

静态分析工具FindBugs支持@NonNull 等注释,具有一些有限的数据流分析。

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

关于java - jUnit 测试精神,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637771/

相关文章:

java - "incompatible types: cannot infer type-variable"为链表

Java:递归和按值传递

java - 使用 ActivityUnitTestCase 时出现 RuntimeException,但在 ActivityInstrumentationTestCase2 时不会

java - 如何在java中测试本地内部类方法?

java - 如何在 Spring Boot 中为 Controller 编写单元测试

language-agnostic - 成本、进度、质量 : pick two

methodology - 如何经常通过精益/看板发布?

java - 如何在使用 hibernate 模板查询数据库的 EJB bean 中设置缓存?

使用 ECB 模式的 Java 加密 TwoFish

css - SMACSS 元素的文件夹结构——类放在哪里?