TDD기반의 프로그래밍 중 스프링의 IC를 사용할때 Spring TestContext Framework를 사용하게 된다.
그럴 때 편의를 위해서 어노테이션을 사용하게 되는 경우가 많은데
아래와 같이 테스트용 메소드 상단에 기록을 하는 것이 일반적이다.
@RunWith(SpringJUnit4ClassRunner.class)
// specifies the Spring configuration to load for this test fixture
@ContextConfiguration(locations={"daos.xml"})
public final class HibernateTitleDaoTests {
// this instance will be dependency injected by type
@Autowired
private HibernateTitleDao titleDao;
public void testLoadTitle() throws Exception {
Title title = this.titleDao.loadTitle(new Long(10));
assertNotNull(title);
}
}
// specifies the Spring configuration to load for this test fixture
@ContextConfiguration(locations={"daos.xml"})
public final class HibernateTitleDaoTests {
// this instance will be dependency injected by type
@Autowired
private HibernateTitleDao titleDao;
public void testLoadTitle() throws Exception {
Title title = this.titleDao.loadTitle(new Long(10));
assertNotNull(title);
}
}
그런데 이렇게 설정을 해놓고 실행시에 아래와 같은 오류가 발생할 경우에는
Type mismatch: cannot convert from Class<SpringJUnit4ClassRunner> to Class<? extends Runner>
설치된 JUnit 의 버전을 확인 해보자.
JUnit 4.4 이후의 버전을 사용하게 되면 위의 오류는 사라질 것이다.
설치된 JUnit 의 버전을 확인 해보자.
또한 위와 같이 Autowire를 설정시에는 꼭 ApplicationConext.xml 파일의 beans 설정에 defalt-autowire속성이 설정되었는지 확인해야 한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" ... 중략 ... default-autowire="byName">
<bean id="boardDAO" class="com.naver.bbs.dao.BoardDAOImpl" />
</beans>
<beans xmlns="http://www.springframework.org/schema/beans" ... 중략 ... default-autowire="byName">
<bean id="boardDAO" class="com.naver.bbs.dao.BoardDAOImpl" />
</beans>
댓글 없음:
댓글 쓰기