当前位置: 首页 > 知识库问答 >
问题:

使用JUnit测试具有布尔条件的无效方法

姬昀
2023-03-14

我试图用Junit测试内部有布尔条件的void方法

/** Method to create request */
public void createRequest(String name) {

  if (verifyName(name)) {
    testRepo.getRequest(name); // Void method from test repo
    demoRepo.testMethod(name); // Another void method from demo repo
  }
}

/** Validate name */
private boolean verifyName(String name) {

 return "Test".equals(name);
}

在这种情况下,当verifyName()使用JUnit返回true/false时,测试void方法的最佳方法是什么??

预期测试场景:

  1. verifyName()返回true--

共有2个答案

万高畅
2023-03-14

您可以简单地编写两个场景:

@Captor
private String ArgumentCaptor<String> nameCaptor;

@Test
public void testForValidName() {
    service.createRequest("Test");
    Mockito.verify(testRepo, Mockito.times(1)).getRequest(nameCaptor.capture());
    Mockito.verify(demoRepo, Mockito.times(1)).testMethod(nameCaptor.capture());
    List<String> capturedValues = nameCaptor.getValues();
    Assert.assertEquals("Test", capturedValues.get(0));
    Assert.assertEquals("Test", capturedValues.get(1));
}

@Test
public void testForInValidName() {
   service.createRequest("Test1");
   Mockito.verifyNoMoreInteractions(testRepo);
   Mockito.verifyNoMoreInteractions(demoRepo);
}
孟修竹
2023-03-14

您可以根据条件验证是否调用了某个函数

试试这样吧

@Test
public void testValidName() {
    service.createRequest("Test");
    verify(testRepo, times(1)).getRequest();
    verify(demoRepo, times(1)). testMethod();
}
 类似资料:
  • 问题内容: 我在下面的方法中编写测试用例时遇到问题: 这是我编写的测试用例,但我认为此测试用例中存在继承问题或逻辑问题。应该是一个非常简单的示例,但无法弄清楚。这是我写的代码: 问题答案: 两件事情 : 您正在静态调用非静态方法。该方法应声明为静态: public static boolean evenNum(double num){ } 您没有正确输入方法的名称。仔细看。还考虑将其重命名为更易读

  • 我有一个名为dealDeck()的公共静态void方法,该方法从名为deck的ArrayList中获取对象,并根据它们在列表中的位置将它们分离并放置到4个不同的ArrayList中。是否有JUnit测试来检查方法是否按计划运行? 是否可以或应该测试此方法?

  • 上面是我的测试用例。基于两个案例,我想执行上述测试方法。 例如: 在条件X中,只应执行,, 在条件Y下,应执行,,

  • 问题内容: 在我们的项目中,我有几个JUnit测试,例如从目录中获取每个文件并对其进行测试。如果我在中实现了一种方法,那么它只会显示为可能失败或成功的一项测试。但是我对每个文件的结果都很感兴趣。如何编写一个/ 使得每个文件显示为单独的测试,例如在Eclipse的图形TestRunner中?(为每个文件编写显式测试方法不是一种选择。) 问题答案: 看看JUnit 4 中的 参数化测试 。 实际上,我

  • 我有这两种方法,在使用Mock实现测试时遇到了困难。我该如何参加考试? 我有麻烦得到Jboss目录而不必启动System.get属性(jboss.server.temp.dir);

  • 问题内容: 好的,因此注释非常适合标记不应运行测试用例。 但是,有时我想忽略基于运行时信息的测试。例如,如果我有一个并发测试需要在具有一定数量内核的计算机上运行。如果此测试是在单处理器计算机上运行的,那么我认为仅通过测试是不正确的(因为尚未运行),并且通过测试并破坏构建肯定不是正确的选择。 因此,我希望能够在运行时忽略测试,因为这似乎是正确的结果(因为测试框架将允许构建通过,但记录未运行测试)。我