java - 如何为简单的配置类编写测试?

标签 java testing junit mockito

我代码中的每个类都需要至少进行 60% 的测试。我无法理解如何测试像下面这样的简单配置类。谁能指出我正确的方向?

@Configuration
public class JsonConfiguration {

   @Bean
   @Primary
   public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
       ObjectMapper objectMapper = builder.build();
       objectMapper.registerModule(new JavaTimeModule());
       return objectMapper;
   }
}

最佳答案

这个问题解决了单元测试的基本问题之一:我们在做什么以及为什么。谷歌对此有很多话要说。

我坚信大多数现有的单元测试用例只是测试它们自己,并且会消耗大量资源。

您的代码简洁明了,确实没有什么可测试的,您应该设法说服当权者放宽 60% 规则。感谢它不是 90% 顺便说一句。

如果不能放宽 60% 的规则,您至少可以做 3 件事:

  1. 努力给人留下深刻印象。编写一个测试,使用的行数是代码行数的 2-3 倍,使用模拟对象来断言您的代码执行了它明确执行的操作。如果您更改了代码的任何实现细节,并且它实际上并没有测试您的代码是否具有您想要的效果,您将不得不更改它。

  2. 作弊。编写一个只断言任何内容但以最简单的方式运行代码的测试。将满足推纸器并最大限度地减少维护。

  3. 尝试编写测试代码,实际测试您的代码是否在尽可能抽象的层次上完成了预期的工作。在您的情况下,可能会断言在您的代码运行后注入(inject)的 objectmapper 实际上包含该模块。这更难,实际上主要是测试库代码,但至少它增加了一些值(value)。

关于java - 如何为简单的配置类编写测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966116/

相关文章:

python - 如何指定要运行的生菜方案

java - 使用 Eclipse Java : Can I run code/tests from within another JVM?

java - JMockit注入(inject)嵌套成员变量

java - 为什么用相同的数据填充 RecyclerView 行?

java - Xtend @Data 值对象的附加构造函数

ruby-on-rails - Rails ActiveSupport::TestCase - 彩色输出

angular - 类型 'jasmineMatches' 中缺少属性 'x'

java - 测试用例以确保数据无法加载

java - 如何杀死服务器端以前的ajax请求?

java - 为什么有人会在方法中制作本地最终锁定?