데이타베이스에 대한 테스트를 할 수 있는 DBUnit에 대한 샘플 코드.
DBUnit은 DataBaseConnection을 JDBCDriver,JNDI,DataSource등에서 얻어올 수 있다. 아래 예제는 JDBCDriver에서 얻어오는 예제
테스트 절차는 다음과 같다.
1) setUp메서드에서 데이타베이스를 테스트전으로 초기화 하고, (이때, XML파일을 이용해서 초기 데이타를 로딩할 수 있다.)
2) 테스트할 OBJECT를 수행한후
3) 테스트 기대 결과를XML에서 읽은후에
4) 데이타베이스의 기록 상태를 3)과 비교한다.
참고로 1)의 데이타는 테스트케이스에서 자동으로 XML 파일로Generation하거나 DTD를 생성할 수 있다.
참고 : http://www.onjava.com/pub/a/onjava/2004/01/21/dbunit.html
== EmpDAOTest .java ==
package bcho.simpledb.test;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import org.dbunit.Assertion;
import org.dbunit.DBTestCase;
import org.dbunit.PropertiesBasedJdbcDatabaseTester;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
import bcho.simpledb.EmpDAO;
import bcho.simpledb.EmpDAOImpl;
public class EmpDAOTest extends DBTestCase
{
final static String JDBC_DRIVER="org.gjt.mm.mysql.Driver";
final static String JDBC_USERID="irteam";
final static String JDBC_USERPASSWD="svnirteam";
final static String JDBC_URL="jdbc:mysql://121.156.62.202:20001/db_svn_auth";
//
// Method Overloading
//
protected IDataSet getDataSet() throws Exception
{
return new FlatXmlDataSet(new FileInputStream("c:\\temp\\dataset.xml"));
}
public EmpDAOTest(String name){
super(name);
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER );
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL );
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, JDBC_USERID );
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, JDBC_USERPASSWD );
}
protected DatabaseOperation getSetUpOperation() throws Exception
{
return DatabaseOperation.DELETE_ALL;
}
protected DatabaseOperation getTearDownOperation() throws Exception
{
return DatabaseOperation.NONE;
}
//
// Test Method
//
public void testInsertEmployee(){
IDatabaseConnection conn = null;
try{
// execute Test Object
EmpDAO empDao = new EmpDAOImpl();
empDao.insertEmployee("bcho", "YoungIn Suji");
// fetch Data After insert
conn = getConnection();
IDataSet databaseDataSet = conn.createDataSet();
ITable actualTable = databaseDataSet.getTable("BCHO_EMP");
// fetch Data from XML data sheet
IDataSet expectedDataSet = new FlatXmlDataSet(new File("c:\\temp\\dataset.xml"));
ITable expectedTable = expectedDataSet.getTable("BCHO_EMP");
Assertion.assertEquals(expectedTable,actualTable);
}catch(Exception e ){
e.printStackTrace();
fail("Test failed during testEmpTable");
}finally{
try{
closeConnection(conn);
}catch(Exception e){
fail("Fail to close connection");
}//try-catch
}//finally
}
}
=== dataset.xml ==
<?xml version='1.0' encoding='euc-kr'?>
<dataset>
<BCHO_EMP name='bcho'
address='Seoul Korea'/>
</dataset>
===
'ALM > Test Automation' 카테고리의 다른 글
Unit Testing WebLogic Workshop 8.1 Applications & JWebUnit (0) | 2007.08.27 |
---|---|
JUnitEE vs Catcus (0) | 2007.08.27 |
단위 성능 테스트 (0) | 2007.08.24 |
단위 테스트 방법 (0) | 2007.08.24 |
테스트의 종류 (0) | 2007.08.24 |