【问题标题】:How do I test a void method using JUnit and Mockito?如何使用 JUnit 和 Mockito 测试 void 方法?
【发布时间】:2015-09-20 17:15:09
【问题描述】:

我的void 方法更改了类中的boolean 变量值。 DI 如何检查?

我有:

  • 模拟类对象
  • 使用适当的参数调用方法
  • 检查了实例变量

但这不会改变实例变量的值。我该怎么做?

ReferenceLettersBean rf = Mockito.mock(ReferenceLettersBean.class);
     rf.setBoolcheck(false);

Mockito.doNothing().when(rf).checkForDuplicates(anyString(),     anyString(), anyString());
         rf.checkForDuplicates("abcd@emal.com","abd@gmail.com","abcd@gmail.com");
assertEquals(true,rf.getBoolcheck());

【问题讨论】:

  • 是的。添加上面的代码

标签: java unit-testing mockito junit4


【解决方案1】:
  • 不要模拟您要测试的课程。
  • 模拟与您尝试测试的类交互的类。

如果你想测试一个类中的一个字段从 false 变为 true,你真正想要做的是(我没有你的实际构造函数,我只是在猜测):

SomeDependency dependency = mock(SomeDependency.class);

// Make a REAL ReferenceLettersBean
ReferenceLettersBean bean = new ReferenceLettersBean(dependency);

// now make your test
rf.checkForDuplicates("abcd@emal.com","abd@gmail.com","abcd@gmail.com");
assertEquals(true,rf.getBoolcheck());

【讨论】:

    【解决方案2】:

    这个布尔值似乎是一个内部状态。这不是您可以直接使用单元测试进行测试的东西,除非您将其公开或者可以通过影响其他方法的行为来检测它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2023-02-13
      相关资源
      最近更新 更多