【发布时间】:2016-06-03 13:34:05
【问题描述】:
在使用 EasyMock 测试我的 Spring 类时,我遇到了以下情况:
我的 Spring 配置采用 Spring component-scan 配置的原始 DAO 对象,而不是我的模拟 DAO 对象。
请在下面找到我的模拟、AppContext 和测试类:
ApplicationContxt-Test.xml
<context:annotation-config />
<context:component-scan base-package="com.test.testclasses"/>
<import resource="mockServices.xml" />
MockServices.xml
<bean class="org.easymock.EasyMock" factory-method="createMock"
id="codeDAO" primary="true" >
<constructor-arg value="com.test.testclasses.dao.MaintainCodeDAO" />
</bean>
JUnit 类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:ApplicationContxt-Test.xml")
public class MaintainCodeServiceImplTest {
@Autowired
private MaintainCodeDAO codeDAO;
@Autowired
private MaintainCodeService maintainCodeService;
@Before
public void setUp() {
EasyMock.reset(codeDAO);
}
@After
public void tearDown() {
EasyMock.reset(codeDAO);
}
@Test
public void shouldAutowireDependencies() {
assertNotNull(codeDAO);
assertNotNull(maintainCodeService);
}
@Test
public void getProcedureByCode_success() throws Exception {
MaintainCodeVO maintainCodeVO = new MaintainCodeVO();
EasyMock.expect(codeDAO.searchProcedureCode(isA(String.class))).andReturn(maintainCodeVO);
EasyMock.replay(codeDAO);
MaintainCodeBO maintainCodeResult = maintainCodeService.getProcedureByCode("test");
EasyMock.verify(codeDAO);
codeDAO.searchProcedureCode("test");
assertNotNull(maintainCodeResult);
EasyMock.reset(codeDAO);
}
}
在这里,我正在模拟 codeDAO,并且在测试服务类时,而不是模拟 codeDAO,原始 DAO 对象正在自动装配,EasyMock.verify() 正在引发异常。不知道是什么问题。上面的配置有问题吗?
【问题讨论】:
标签: unit-testing junit easymock spring-test