我尝试为我的JSF应用程序和我正在使用的mockito实现一些测试。(我也使用了弹簧)
@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
方法检索实例时。我之前(通过前面的构造函数)设置的所有参数都是空的。我刚接触模拟对象,那么这种行为是正常的,还是我的代码中有错误?
发布于 2013-05-16 00:36:31
这实际上取决于GeneralConfigService#getInstance()的实现。此外,如果使用@InjectMocks
注释,还可以大大简化测试代码。
在使用MockitoJUnitRunner
时,您不需要手动初始化模拟和注入依赖项:
@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
...
}
}
发布于 2015-10-21 18:57:05
别忘了使用
MockitoAnnotations.initMocks(this);
如果你通过注解来模拟对象,比如@Mock Objectname
发布于 2019-11-05 23:32:57
我这里的问题是Test
指定的导入不正确:
曾经是
import org.junit.jupiter.api.Test;
对,是这样
import org.junit.Test;
https://stackoverflow.com/questions/16570029
复制相似问题