テスト対象ソース AcceptOrderBean.java
import java.sql.*;
import java.util.ArrayList;
public class AcceptOrderBean {
private String o_num;
private String c_num;
private String p_num;
private int dc_rate;
private int option_price;
private String employee;
private Date accept_date;
public String getO_num() {
return o_num;
}
public String getC_num() {
return c_num;
}
public String getP_num() {
return p_num;
}
public int getDc_rate() {
return dc_rate;
}
public int getOption_price() {
return option_price;
}
public String getEmployee() {
return employee;
}
public Date getAccept_date() {
return accept_date;
}
public void setO_num(String o_num) {
this.o_num = o_num;
}
public void setC_num(String c_num) {
this.c_num = c_num;
}
public void setP_num(String p_num) {
this.p_num = p_num;
}
public void setDc_rate(int dc_rate) {
this.dc_rate = dc_rate;
}
public void setOption_price(int option_price) {
this.option_price = option_price;
}
public void setEmployee(String employee) {
this.employee = employee;
}
public void setAccept_date(Date date) {
this.accept_date = date;
}
private static Connection getConnection() throws Exception {
Class.forName(""com.mysql.jdbc.Driver"");
Connection connection = null;
// connection = DriverManager.getConnection(
// ""jdbc:mysql://localhost:3306/dbunit"", ""root"", """");
connection = DriverManager.getConnection(
""jdbc:mysql:///dbunit?useUnicode=true&charcterEncoding=UTF-8"",
""root"", """");
connection.setAutoCommit(false);
return connection;
}
public void loadByO_num(String o_num) throws Exception {
Connection connection = null;
try {
connection = getConnection();
connection.setAutoCommit(true);
String sql = ""select * from Accept_Order where o_num=?"";
PreparedStatement stat = connection.prepareStatement(sql);
stat.setString(1, o_num);
ResultSet result = stat.executeQuery();
if (result.next()) {
this.o_num = o_num;
this.c_num = result.getString(""c_num"");
this.p_num = result.getString(""p_num"");
this.dc_rate = result.getInt(""dc_rate"");
this.option_price = result.getInt(""option_price"");
this.employee = result.getString(""employee"");
this.accept_date = result.getDate(""accept_date"");
}
} finally {
if (connection != null)
connection.close();
}
}
public static AcceptOrderBean[] findByEmployee(String employee)
throws Exception {
Connection connection = null;
try {
connection = getConnection();
String sql = ""select * from Accept_Order where employee=?"";
PreparedStatement stat = connection.prepareStatement(sql);
stat.setString(1, employee);
ResultSet result = stat.executeQuery();
ArrayList
while (result.next()) {
AcceptOrderBean accept = new AcceptOrderBean();
accept.o_num = result.getString(""o_num"");
accept.c_num = result.getString(""c_num"");
accept.p_num = result.getString(""p_num"");
accept.dc_rate = result.getInt(""dc_rate"");
accept.option_price = result.getInt(""option_price"");
accept.employee = result.getString(""employee"");
accept.accept_date = result.getDate(""accept_date"");
list.add(accept);
}
return (AcceptOrderBean[]) list.toArray(new AcceptOrderBean[list
.size()]);
} finally {
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
}
}
}
public void store() throws Exception {
Connection connection = null;
try {
connection = getConnection();
String sql = ""insert into Accept_Order values(?,?,?,?,?,?,?)"";
PreparedStatement stat = connection.prepareStatement(sql);
stat.setString(1, this.o_num);
stat.setString(2, this.c_num);
stat.setString(3, this.p_num);
stat.setInt(4, this.dc_rate);
stat.setInt(5, this.option_price);
stat.setString(6, this.employee);
stat.setDate(7, this.accept_date);
stat.executeUpdate();
connection.commit();
} finally {
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
}
}
}
public void delete() throws Exception {
Connection connection = null;
try {
connection = getConnection();
String sql = ""delete from Accept_Order where o_num=?"";
PreparedStatement stat = connection.prepareStatement(sql);
stat.setString(1, this.o_num);
stat.executeUpdate();
connection.commit();
} finally {
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
}
}
}
}
テストケース AcceptOrderBeanTest.java
import static org.junit.Assert.*;
import org.dbunit.Assertion;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.QueryDataSet;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Date;
import java.sql.DriverManager;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class AcceptOrderBeanTest extends AcceptOrderBean {
private File file;
private static Connection getConnection() throws Exception {
Class.forName(""com.mysql.jdbc.Driver"");
Connection connection = null;
// connection = DriverManager.getConnection(
// ""jdbc:mysql://localhost:3306/dbunit"", ""root"", """");
connection = DriverManager.getConnection(
""jdbc:mysql:///dbunit?useUnicode=true&charcterEncoding=UTF-8"",
""root"", """");
// テストソースではコミット宣言はデフォルトのままでよい。
// connection.setAutoCommit(false);
return connection;
}
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@SuppressWarnings(""deprecation"")
@Before
public void setUp() throws Exception {
IDatabaseConnection connection = null;
try {
Connection conn = getConnection();
connection = new DatabaseConnection(conn);
// 現状のバックアップを取得
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable(""ACCEPT_ORDER"");
file = File.createTempFile(""accept"", "".xml"");
FlatXmlDataSet.write(partialDataSet, new FileOutputStream(file));
// テストデータを投入する
IDataSet dataSet = new FlatXmlDataSet(new FileInputStream(
""C:/pleiades/workspace/dbtest/src/accept_order_data.xml""));
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (connection != null)
connection.close();
} catch (SQLException e) {
}
}
}
@SuppressWarnings(""deprecation"")
@After
public void tearDown() throws Exception {
IDatabaseConnection connection = null;
try {
Connection conn = getConnection();
connection = new DatabaseConnection(conn);
IDataSet dataSet = new FlatXmlDataSet(file);
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (connection != null)
connection.close();
} catch (SQLException e) {
}
}
}
@Test
public void testLoadByO_num() throws Exception {
// loadByO_numメソッドを実行
AcceptOrderBean order = new AcceptOrderBean();
order.loadByO_num(""5001"");
// 実行結果を確認
// 取得したAcceptOrderBeanの配列は「文字列」で比較する。
assertEquals(""accept_date=2004-01-01"",
""accept_date="" + order.getAccept_date());
assertEquals(""c_num=1000"", ""c_num="" + order.getC_num());
assertEquals(""dc_rate=5"", ""dc_rate="" + order.getDc_rate());
assertEquals(""employee=101"", ""employee="" + order.getEmployee());
assertEquals(""o_num=5001"", ""o_num="" + order.getO_num());
assertEquals(""option_price=30"",
""option_price="" + order.getOption_price());
assertEquals(""p_num=501"", ""p_num="" + order.getP_num());
}
@SuppressWarnings(""deprecation"")
@Test
public void testDelete() throws Exception {
// deleteメソッドを実行
AcceptOrderBean order = new AcceptOrderBean();
order.setO_num(""5003"");
order.delete();
// 実行結果を確認
IDatabaseConnection connection = null;
try {
// accept_orderテーブルの状態を確認
Connection conn = getConnection();
connection = new DatabaseConnection(conn);
IDataSet databaseDataSet = connection.createDataSet();
ITable actualTable = databaseDataSet.getTable(""accept_order"");
// あるべき姿を確認
IDataSet expectedDataSet = new FlatXmlDataSet(new FileInputStream(
""C:/pleiades/workspace/dbtest/src/accept_order_data3.xml""));
ITable expectedTable = expectedDataSet.getTable(""accept_order"");
// 比較する
Assertion.assertEquals(expectedTable, actualTable);
} finally {
if (connection != null)
connection.close();
}
}
@SuppressWarnings(""deprecation"")
@Test
public void testStore() throws Exception {
// storeメソッドの実行
AcceptOrderBean order = new AcceptOrderBean();
order.setO_num(""5004"");
order.setC_num(""1004"");
order.setP_num(""501"");
order.setDc_rate(20);
order.setOption_price(400);
order.setEmployee(""101"");
order.setAccept_date(Date.valueOf(""2004-01-03""));
order.store();
// 実行結果を検証する
IDatabaseConnection connection = null;
try {
// accept_orderテーブルの状態を確認
Connection conn = getConnection();
connection = new DatabaseConnection(conn);
IDataSet databaseDataSet = connection.createDataSet();
ITable actualTable = databaseDataSet.getTable(""accept_order"");
// 期待されるデータを取得
IDataSet expectedDataSet = new FlatXmlDataSet(new FileInputStream(
""C:/pleiades/workspace/dbtest/src/accept_order_data2.xml""));
ITable expectedTable = expectedDataSet.getTable(""accept_order"");
// 比較する
Assertion.assertEquals(expectedTable, actualTable);
} finally {
if (connection != null)
connection.close();
}
}
// @Test
public final void test() {
}
}
データ
<?xml version='1.0' encoding="UTF-8"?>
<dataset>
<ACCEPT_ORDER o_num="5001" c_num="1000" p_num="501" dc_rate="5"
option_price="30" employee="101" accept_date="2004-01-01" />
<ACCEPT_ORDER o_num="5002" c_num="1001" p_num="502" dc_rate="10"
option_price="20" employee="104"
accept_date="2004-02-02" />
<ACCEPT_ORDER o_num="5003" c_num="1002" p_num="503" dc_rate="15"
option_price="10" employee="101" accept_date="2004-01-31" />
</dataset>
<?xml version='1.0' encoding="UTF-8"?>
<dataset>
<ACCEPT_ORDER o_num="5001" c_num="1000" p_num="501" dc_rate="5"
option_price="30" employee="101" accept_date="2004-01-01" />
<ACCEPT_ORDER o_num="5002" c_num="1001" p_num="502" dc_rate="10"
option_price="20" employee="104"
accept_date="2004-02-02" />
<ACCEPT_ORDER o_num="5003" c_num="1002" p_num="503" dc_rate="15"
option_price="10" employee="101" accept_date="2004-01-31" />
<ACCEPT_ORDER o_num="5004" c_num="1004" p_num="501" dc_rate="20"
option_price="400" employee="101" accept_date="2004-01-03" />
</dataset>
<?xml version='1.0' encoding="UTF-8"?> <dataset> <ACCEPT_ORDER o_num="5001" c_num="1000" p_num="501" dc_rate="5" option_price="30" employee="101" accept_date="2004-01-01" /> <ACCEPT_ORDER o_num="5002" c_num="1001" p_num="502" dc_rate="10" option_price="20" employee="104" accept_date="2004-02-02" /> </dataset>