본문 바로가기

Programming/JAVA

[펌] DbUnit

DbUnit는 손쉽게 JDBC 쿼리를 데이터베이스에 보내거나 그 결과 값을 가져올 수 있게 해주는 JUnit을 확장한 툴입니다. 데이터베이스 안의 값을 조작하는 것이 중요한 프로젝트에서 DbUnit의 효용성은 매우 크다고 할 수 있죠. DbUnit을 익히기 위해서는 우선 UbUnit의 웹사이트에 있는 이 문서를 참조하는 것이 좋을 것 같습니다.

그런데, 뭐 공부해서 나쁠 거야 없겠지만 처음 본 문서에서부터 난무(?)하는 알 수 없는 상수와 생소한 사용법은 조금 부담스러운게 사실이군요. 그래서 데이터베이스 테스트환경을 초기화할 때 사용할 수 있는 방법 한가지만 얘기해 볼까 합니다.

 

Ant의 build.xml 파일에 우선 다음과 같이 앤트의 확장 태스크를 정의해 줍니다.

 

<target name="define-tasks">

    <taskdef name="dbunit" classname="org.dbunit.ant.DbUnitTask"
            classpath=${dbunit-2.0.jar}"/>

</target>

 

필요한 jar파일의 이름으로 쓰인 변수(jar파일의 실제 위치와 이름을 값으로 가진)는 물론 따로 환경파일에 정의되어 있다고 가정합니다. 앞으로 나올 변수도 다 마찬가지입니다. 어떤 값이 필요한지는 변수명만 봐도 다 아실거에요. :-)

 

 

<target name="db-export" depends="define-tasks">
    <dbunit driver="${database.driver_class}"
        url="${database.url}"
        userid="${database.username}"
        password="${database.password}">
        <export dest="db-export.xml" format="xml"/>
    </dbunit>
</target>

 

자, 이 앤트 타겟은 이름 그대로 ${database.url}의 값 중에 포함되어 있을 어떤 테이블에 있는 값들을 모조리 db-export.xml 파일에 저장하는 기능을 합니다. 이렇게 생성된 파일을 어디에 써먹을까요?

 

<target name="db-load" depends="define-tasks">
    <property name="operation" value="CLEAN_INSERT"/>
    <property name="file" value="db-export.xml"/>
    <dbunit driver="${database.driver_class}"
        supportBatchStatement="false"
        url="${database.url}"
        userid="${database.username}"
        password="${database.password}">
        <operation type="${operation}" src="${file}" format="xml"/>
    </dbunit>
</target>

 

이런식의 타겟을 만들어서 데이터베이스를 테스트하기 전에 데이터를 깨끗이 초기화하는데 사용할 수 있겠죠. 다음과 같은 방식으로요.

 

<target name="test-db" depends="db-load">

    <junit>

        ... 테스트를 합니다! ...

    </junit>

</target>

 

 

물론, DbUnit은 이런 목적으로만 만들어진 툴은 아닙니다. JUnit에서 TestCase를 상속하듯이DatabaseTestCase를 상속해서 실제 DB의 값과 원하는 결과 값을 완전하게(!) 비교하는 것이 주된 목적입니다. 다만 하이버네이트 등과 같은 ORM을 사용하는 프로젝트에서는 조금은 그 색이 바래보일 것 같습니다. 좀 더 상위 계층에서 객체의 몇몇 필드값을 비교해 보는 방식이 많이 쓰이기도 하구요.

 

 

참고 : https://appfuse.dev.java.net/ 

검색어 : dbunit, DBUNIT, DBUnit, DbUnit, 디비유니트, 디비유닛

[출처] [펌] DbUnit|작성자 짱가

'Programming > JAVA' 카테고리의 다른 글

[펌]JSTL(JSP Tag Library) 개요  (0) 2008.10.16
[펌]오라클 clob JDBC 예제  (0) 2008.08.08
[펌] DBUnit의 사용  (0) 2008.08.05
[REX] Commons-DbUtils  (0) 2008.08.05
[Exception전략] Java의 Exception 처리 최적화  (0) 2008.08.05