问题一:什么是单测方法实现的三段落结构?
什么是单测方法实现的三段落结构?
参考回答:
单测方法的实现建议采用given-when-then的三段落结构,这种结构能够让代码清晰易读,提高可维护性。given部分用于设置测试场景和预期数据,when部分用于执行被测方法,then部分用于验证结果。例如:
```
@Test
public void should_returnFalse_when_deleteContent_given_invokeFailed() {
// given
Result<Boolean> deleteDocResult = new Result<>();
deleteDocResult.setEntity(Boolean.FALSE);
when(docManageService.deleteContentDoc(anyLong())).thenReturn(deleteDocResult);
when(docManageService.queryContentDoc(anyLong())).thenReturn(new DocEntity());
// when
Long contentId = 123L;
Boolean result = contentService.deleteContent(contentId);
// then
verify(docManageService, times(1)).queryContentDoc(contentId);
verify(docManageService, times(1)).deleteContentDoc(contentId);
Assert.assertFalse(result);
}
```
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655567
问题二:为什么推荐使用given-when-then的三段落结构来编写单元测试?
为什么推荐使用given-when-then的三段落结构来编写单元测试?
参考回答:
推荐使用given-when-then的三段落结构来编写单元测试,因为这种结构能够清晰地描述测试的各个部分:given部分设置测试场景,when部分执行被测方法,then部分验证结果。这种结构不仅使代码易于阅读和理解,还能够帮助我们更好地组织测试用例,提高代码的可维护性和可读性。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655568
问题三:在JUnit测试类中,如何使用Mockito来模拟依赖对象?
在JUnit测试类中,如何使用Mockito来模拟依赖对象?
参考回答:
在JUnit测试类中,你可以使用Mockito的@Mock注解来模拟依赖对象。同时,需要添加@RunWith(MockitoJUnitRunner.class)到测试类上,或者使用MockitoAnnotations.initMocks(this)在测试方法之前初始化mocks。例如,在ContentServiceTest类中,我们模拟了DocManageService作为contentService的依赖,并通过@InjectMocks注解将模拟的依赖注入到contentService对象中。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655601
问题四:Mockito中的@Mock和@InjectMocks注解分别起什么作用?
Mockito中的@Mock和@InjectMocks注解分别起什么作用?
参考回答:
在Mockito中,@Mock注解用于创建一个模拟对象(mock object),它会模拟一个类的行为。而@InjectMocks注解则用于将被测试对象(如ContentService)的模拟依赖(如DocManageService)注入到该对象中,以便在测试中使用。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655570
问题五:如何模拟一个无返回值的方法?
如何模拟一个无返回值的方法?
参考回答:
要模拟一个无返回值的方法(如void类型的方法),你可以使
doNothing().when(mockObject.methodName(anyArguments()));
的语法。例如,要模拟
contentService的deleteContent
方法不执行任何操作,你可以写doNothing().when(contentService.deleteContent(anyLong()));。
关于本问题的更多回答可点击原文查看: