首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Mockito模拟带有自定义注释的类?

如何使用Mockito模拟带有自定义注释的类?
EN

Stack Overflow用户
提问于 2018-08-22 15:44:03
回答 1查看 1.9K关注 0票数 0

我正在为CatalogFacade类编写单元测试;这个类是这样的:

代码语言:javascript
运行
复制
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;
    }

}

我以这种方式编写了单元测试:

代码语言:javascript
运行
复制
@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类有自定义注释,而我无法模拟它。

我怎么能模拟这个类呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-22 16:19:36

这不起作用的主要原因是因为您的类(CatalogFacade)中有多个ITServiceMapper实例。

Mockito(特别是@InjectMocks)在这些场景中有一些问题。修复此问题的最简单方法是使用如下所示的name属性辅助Mockito

代码语言:javascript
运行
复制
@Mock(name = "servMapper")
private ITServiceMapper servMapper;

@Mock(name = "dServMapper")
private ITServiceMapper dServMapperMock;

这就是构造函数注入总是比字段注入更好的原因之一。有关更多信息,请查看this文章

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51962033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档