【发布时间】:2018-08-22 07:44:02
【问题描述】:
我正在为 CatalogFacade 类编写单元测试;类是这样的:
public class CatalogFacade{
@Inject
@Shallow //custom annotation
private ITServiceMapper servMapper;
@Inject
@Complete //custom annotation
private ITServiceMapper dServMapper;
@Override
public ITService getITService(String serviceCode) {
ITService a = dServMapper.method();
return a;
}
}
而且我是这样写单元测试的:
@RunWith(MockitoJUnitRunner.class)
public class CatalogFacadeTest {
@InjectMocks
private CatalogFacade facade;
@Mock
private ITServiceMapper servMapperMock;
@Mock
private ITServiceMapper dServMapperMock;
@Test
public void getITService() {
/* prepare value objects */
ITService dtoMock= Mockito.mock(ITService.class);
/* Given some preconditions (Arrange) */
given(dServMapperMock.modelToDto(entityMock)).willReturn(dtoMock);
/* When an action occurs (Act) */
ITService service= facade.getITService("AMS-SA-0001");
/* Then verify the output (Assert) */
assertThat(dtoMock.getItServiceCode(),
is(equalTo(service.getItServiceCode())));
}
}
但测试会抛出 NullPointeException,因为当调用 dServMapperMock.method() 时,dservMapperMock 为空,所以我认为它没有正确模拟...
我认为问题可能是 ITServiceMapper 类具有自定义注释,我无法模拟它。
如何模拟这个类?
谢谢!
【问题讨论】:
标签: java unit-testing annotations mockito