반응형
이제 HSQLDB 테스트 환경을 다 만들었으니 DBUint 를 사용해 단위테스트를 해본다.
먼저 AbstractTransactionalDataSourceSpringContextTests 상속받아서
클래스를 하나 만든다.
이것은 abstract class AbstractSingleSpringContextTests 추상클래스에 있으며 이것의 기능은
소스의 내용을 보면알겠지만 설정내용이 저장된 xml 파일 경로를 배열로 넘겨줘야한다.
새로 만든클래스에서 이 함수를 상속받아 xml 경로 정보를 넘기지 않으면 null 만 넘어가게
되어있어 제대로 동작하지 않으므로 재구성한것이다.
protected String[] getConfigLocations() { String paths[] = getConfigPaths(); String locations[] = new String[paths.length]; for(int i = 0; i < paths.length; i++) { String path = paths[i]; if(path.startsWith("/")) locations[i] = "classpath:" + path; else locations[i] = "classpath:" + StringUtils.cleanPath(ClassUtils.classPackageAsResourcePath(getClass()) + "/" + path); } return locations; }새로 만든클래스에 getConfigLocations() 구현한 함수이다. 여기에 필요한 설정정보 xml 을 배열로 넘기면 된다. classpath : 는 WEB-INF/classes 경로로 컴파일된 소스의 위치를 말한다. 이 위치에 test-context.xml 을 위치 시키면된다
protected String[] getConfigLocations(){ String[] path = new String[] {"classpath:test-context.xml"}; return path; }그리고 DAO 클래스를 set 한다
private ProductDAO productDAO; public void setProductDao(ProductDAO productDAO){ this.productDAO = productDAO; }
DAO 클래스는 스프링의 JdbcDaoSupport 상속받아 DAO 공통 클래스 하나 만든다.
import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer; public class CommSpringHSQLDAO extends JdbcDaoSupport { private DataFieldMaxValueIncrementer incrementer; public void setIncrementer(DataFieldMaxValueIncrementer incrementer){ this.incrementer = incrementer; } protected final DataFieldMaxValueIncrementer getIncrementer(){ return incrementer; } }
위 클래스를 상속받아 DAO 클래스 만든다. 그리고 getJdbcTemplate() 함수를 사용하여
import org.springframework.dao.DataAccessException; public class ProductDAO extends CommSpringHSQLDAO{ public List getProductList(){ List products = null; try { products = getJdbcTemplate().queryForList("select * from PRODUCT"); } catch (DataAccessException e) { e.printStackTrace(); } return products; } }아래는 DBUnit 전체 소스 내용이다
public class HSQLDBUnitTest extends AbstractTransactionalDataSourceSpringContextTests { private ProductDAO productDAO; public void setProductDao(ProductDAO productDAO){ this.productDAO = productDAO; } /* (non-Javadoc) * @see org.springframework.test.AbstractSingleSpringContextTests#getConfigLocations() */ protected String[] getConfigLocations(){ String[] path = new String[] {"classpath:test-context.xml"}; return path; } public void testGetProductList(){ List products = productDAO.getProductList(); for (int i=0; i < products.size(); i++){ Map temp = (Map)products.get(i); Iterator iter = temp.keySet().iterator(); while (iter.hasNext()){ String key = iter.next().toString(); System.out.println(key + " : " + temp.get(key)); } } } }
이제 test-context.xml 설정값에 대한 내용이다. 여기에는 jdbc.properties 에서 설정한 아이디,
패스워드,driver, url 을 불러와서 셋팅한다. 그 부분은 <bean id=”propertyConfigurer” 에서
classpath:jdbc.properties
jdbc.properties 의 내용이다.
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql:@localhost:9002
jdbc.username=sa
jdbc.password=
반응형
'자바(JAVA)' 카테고리의 다른 글
google SMTP 를 이용해서 java 에서 Email 보내기 테스트 (1) | 2010.07.19 |
---|---|
Spring 에서 트랜잭션 설정시 NoClassDefFoundError TransactionManager 에러 (0) | 2010.07.18 |
PreparedStatement 사용한 like % 쿼리 문자열 합치기 (0) | 2010.07.06 |
cannot call getWriter() after getOutputStream() 에러 (0) | 2009.09.25 |
(4) HSQLDB 과 Spring Framework - spring framework 에서 hsqldb 연동테스트 (0) | 2009.09.05 |
(3) HSQLDB 과 Spring Framework - eclipse 의 DB Explorer 를 통한 데이타확인 (0) | 2009.09.05 |
(2) HSQLDB 과 Spring Framework - eclipse 와 Ant 를 이용한 테이블 생성,입력 (0) | 2009.09.05 |
(1) HSQLDB 과 Spring Framework - hsqldb 시작과 테이블 생성 (2) | 2009.09.05 |