我尝试为我的 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
方法检索实例时。我之前设置的所有参数(通过之前的构造函数)都是空的。我是模拟对象的新手,这种行为是正常的,还是我的代码有错误?
原文由 flo8433 发布,翻译遵循 CC BY-SA 4.0 许可协议
它实际上取决于 GeneralConfigService#getInstance() 的实现。如果你使用
@InjectMocks
注释,你也可以大大简化你的测试代码。使用
MockitoJUnitRunner
时,您无需初始化模拟并手动注入依赖项: