Java 使用JUnit测试具有布尔条件的void方法
我试图用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
/** 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方法的最佳方法是什么
预期测试场景:
true
-->断言或确保方法得到执行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
并检查它们是否被调用。这是一个与你非常相似的问题:他们在问题中没有提到嘲弄/间谍,而你在回答中也没有提到。如果你打算提出某种模式或框架,你应该大声说出来,并解释应该如何/为什么使用。他们在问题中没有提到模仿/间谍,你在回答中也没有提到。如果你打算提出一个特定的模式或框架,你应该大声说出来,并解释应该如何/为什么使用它。