Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JUnit测试具有布尔条件的void方法_Java_Spring_Spring Boot_Junit - Fatal编程技术网

Java 使用JUnit测试具有布尔条件的void方法

Java 使用JUnit测试具有布尔条件的void方法,java,spring,spring-boot,junit,Java,Spring,Spring Boot,Junit,我试图用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

我试图用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方法的最佳方法是什么

预期测试场景:

  • verifyName()返回
    true
    -->断言或确保方法得到执行
  • verifyName()返回
    false
    -->断言或确保这些方法不会执行

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

    试试那样的

    @Test
    public void testValidName() {
        service.createRequest("Test");
        verify(testRepo, times(1)).getRequest();
        verify(demoRepo, times(1)). testMethod();
    }
    

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

    试试那样的

    @Test
    public void testValidName() {
        service.createRequest("Test");
        verify(testRepo, times(1)).getRequest();
        verify(demoRepo, times(1)). testMethod();
    }
    

    您只需编写两个场景:

    @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);
    }
    
    @Captor
    私有字符串参数captor nameCaptor;
    @试验
    public void testForValidName(){
    createRequest(“测试”);
    验证(testRepo,Mockito.times(1)).getRequest(nameCaptor.capture());
    验证(demoRepo,Mockito.times(1)).testMethod(nameCaptor.capture());
    List capturedValues=nameCaptor.getValues();
    Assert.assertEquals(“Test”,capturedValues.get(0));
    Assert.assertEquals(“Test”,capturedValues.get(1));
    }
    @试验
    public void testForInValidName(){
    createRequest(“Test1”);
    Mockito.verifyNoMoreInteractions(testRepo);
    Mockito.verifyNoMoreInteractions(demoRepo);
    }
    
    您只需编写两个场景:

    @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);
    }
    
    @Captor
    私有字符串参数captor nameCaptor;
    @试验
    public void testForValidName(){
    createRequest(“测试”);
    验证(testRepo,Mockito.times(1)).getRequest(nameCaptor.capture());
    验证(demoRepo,Mockito.times(1)).testMethod(nameCaptor.capture());
    List capturedValues=nameCaptor.getValues();
    Assert.assertEquals(“Test”,capturedValues.get(0));
    Assert.assertEquals(“Test”,capturedValues.get(1));
    }
    @试验
    public void testForInValidName(){
    createRequest(“Test1”);
    Mockito.verifyNoMoreInteractions(testRepo);
    Mockito.verifyNoMoreInteractions(demoRepo);
    }
    
    返回“Test”。等于(名称)?真:假,您可以跳过
    ?true:false
    更新了我的帖子,列出了该帖子的转到工具。这里最相关的工具可能是。您可以监视
    testRepo
    demoRepo
    并检查它们是否被调用。这里有一个与您非常相似的问题:
    返回“Test”.equals(name)?真:假,您可以跳过
    ?true:false
    更新了我的帖子,列出了该帖子的转到工具。这里最相关的工具可能是。您可以监视
    testRepo
    demoRepo
    并检查它们是否被调用。这是一个与你非常相似的问题:他们在问题中没有提到嘲弄/间谍,而你在回答中也没有提到。如果你打算提出某种模式或框架,你应该大声说出来,并解释应该如何/为什么使用。他们在问题中没有提到模仿/间谍,你在回答中也没有提到。如果你打算提出一个特定的模式或框架,你应该大声说出来,并解释应该如何/为什么使用它。