반응형
이제 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 |
