首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mockito模拟对象返回null

Mockito模拟对象返回null
EN

Stack Overflow用户
提问于 2013-05-16 00:10:23
回答 4查看 88.4K关注 0票数 30

我尝试为我的JSF应用程序和我正在使用的mockito实现一些测试。(我也使用了弹簧)

代码语言:javascript
复制
@RunWith(MockitoJUnitRunner.class)
public class GeneralConfigServiceImplTest  {

    private GeneralConfigService generalConfigService;

    @Mock
    private GeneralConfigDAO generalConfigDAO;

    @Mock
    private GeneralConfig gen;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        generalConfigService = new GeneralConfigService();
        ReflectionTestUtils.setField(generalConfigService, "generalConfigDAO", generalConfigDAO);                  
    }

    @Test
    public void testAddGeneralConfigCallDAOSuccess() throws DAOException, EntityNullException, IllegalEntityArgumentException, ParseException, EntityPersistException {
        gen = createGeneralConfigs("label", "value");

        generalConfigService.setInstance(gen);
        generalConfigService.persist();
        log.info(generalConfigService.getInstance().toString());
    }
}

测试成功,但是当我想用getInstance方法检索实例时。我之前(通过前面的构造函数)设置的所有参数都是空的。我刚接触模拟对象,那么这种行为是正常的,还是我的代码中有错误?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-16 00:36:31

这实际上取决于GeneralConfigService#getInstance()的实现。此外,如果使用@InjectMocks注释,还可以大大简化测试代码。

在使用MockitoJUnitRunner时,您不需要手动初始化模拟和注入依赖项:

代码语言:javascript
复制
@RunWith(MockitoJUnitRunner.class)
public class GeneralConfigServiceImplTest  {

    @InjectMocks
    private GeneralConfigService generalConfigService;

    @Mock
    private GeneralConfigDAO generalConfigDAO;

    @Test
    public void testAddGeneralConfigCallDAOSuccess() {
       // generalConfigService is already instantiated and populated with dependencies here
       ...
    }
}
票数 22
EN

Stack Overflow用户

发布于 2015-10-21 18:57:05

别忘了使用

代码语言:javascript
复制
MockitoAnnotations.initMocks(this);

如果你通过注解来模拟对象,比如@Mock Objectname

票数 12
EN

Stack Overflow用户

发布于 2019-11-05 23:32:57

我这里的问题是Test指定的导入不正确:

曾经是

import org.junit.jupiter.api.Test;

对,是这样

import org.junit.Test;

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

https://stackoverflow.com/questions/16570029

复制
相关文章

相似问题

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