DBUnitのメモ

DatabaseOperationの一覧

INSERT

指定したデータセットをテーブルに挿入する。
テーブル内で同じ主キーとなるデータがすでに存在する場合、主キー制約でエラーとなる。

UPDATE

指定したデータセットの同じ主キーとなるデータを上書きする。
上書きするデータが存在しない場合、特に登録は行われない。

DELETE

指定したデータセットとマッチするものだけを削除する。
データセットに含まれていないデータは、削除されない。

DELETE_ALL

指定したデータセットに存在するテーブルのレコードすべてを削除する。
テーブル自体は削除されない。
データセットの逆順にデータが削除される。

CLEAN_INSERT

指定したデータセットに存在するテーブルに対して、DELETE_ALLを行った後、INSERTを行なう。
データセットに含まれるデータのみでテストしたい場合に使用する。
既存のデータはすべて削除される。

REFRESH

指定したデータセットの主キーにマッチするデータを更新する。
更新するデータがない場合は、挿入される。

TRANCATE_TABLE

指定したデータセットに含まれるテーブルが削除される。

NONE

何も行わない処理。 何に使うのだろう・・・

特殊な値を使ったテスト

データセットへ置き換え文字を埋め込んでおく

<?xml version='1.0' encoding='UTF-8'?>
<dataset>
  <sample title="Hello" price="100" date="[SYSDATE]"/>
  <sample title="[NULL]" price="200" date="2005-10-10"/>
</dataset>


置き換える

ReplacementDataSet dataSet = 
    new ReplacementDataSet(new FlatXmlDataSet(new FileInputStream("dataset.xml")));
dataSet.addReplacementObject("[SYSDATE]", new Timestamp(System.currentTimeMillis()));
dataSet.addReplacementObject("[NULL]", null);

Excel 使用時の注意点

Excelの書式設定により、XlsDataSetでの値の取り扱われ方が異なる。
数値はBigDecimal型、日付はDate型、文字列はString型として扱われる。

pluginをインストールする。

せっかくeclipse3.1.1をインストールしたんで
いくつかpluginでも入れてみようということで・・・

Eclipse Web Tools Platform(WTP)

Eclipseの開発元であるEclipse Foundation が提供する、
サーバサイド・アプリケーション開発のプラグインらしい。

主な機能としては・・・
  1. HTML、CSSXMLJavaScriptSQLJSPに対応したウィザードとエディタ
  2. サーブレットEJBWebサービスの作成ウィザード
  3. 各種アプリケーション・サーバーとの連携
  4. JSPファイルをそのまま使ったデバッグ、ステップ実行など
インストール方法

以下の手順で操作
①Help -> Software Updates -> Find and Install・・
②Search for new features to install -> Next・・
③Eclpse.org update siteを選択し、Finish

以下を選択して、後はダイアログに従ってインストール・・・
って結構インストールに時間がかかったよ。。

  • EMF SDK 2.1.0
  • GEF 3.1.1
  • JEM
  • WTP 0.7.1

※.アプリケーション・サーバーは含まれていないんで別途インストールが必要とのこと。

なんか眠くてボーっとしてたらWTPのインストール中にエラーが出て失敗しました。。
しかもエラー内容見逃した。。
眠いんで後日チャレンジ。。

Eclipse Test and Performance Tools Platform(Eclipse TPTP)

WTPと同じくEclipseの開発元であるEclipse Foundation が提供する、
非機能試験を実施する為のプラグインです。
もともとはHyadesという名前だったらしい。そーいえば聞いたことだけあるような・・

主な機能としては・・・
  1. Javaアプリケーションのプロファイリング
    1. メソッドごとの実行状況の記録
    2. 実行時間の測定
    3. モリー使用状況の調査など
    4. システムやWebサーバーの性能情報を取得
    5. 各種ログの分析、診断
    6. HTTPリクエストの生成および絵rスポンス時間の測定

インストール方法

TPTPはXSDとEMFの2つのプラグインを使用します。
ということで先にWTPをインストールしたんだよね。
(同様にXSDとEMFが必要だから。)
TPTP自体はArchived Projects | The Eclipse Foundationからダウンロード。

  • tptp.sdk-TPTP-4.0.1
プロファイリング・エージェントのインストール

TPTPは、リモートで稼動するJavaアプリケーションのプロファイリングも行えるとのこと。
その際、ローカルとリモートとの仲介役として動作するのが「プロファイリング・エージェント」
らしい。

インストール
①プロファイリング・エージェントはEclipse Downloads | The Eclipse Foundationから
Windows版のruntimeをダウンロード。
②適当なフォルダへ展開。
今回は「E:\Java\eclipse\plugin\tptp\tptpdc.win_ia32-TPTP-4.0.1」へ展開
③binフォルダのsetConfig.batを実行して、java.exeの場所を設定。
Windowsサービスとして設定する

E:\Java\eclipse\plugin\tptp\tptpdc.win_ia32-TPTP-4.0.1\bin>manageservice add "Agent Controller" "E:\Java\eclipse\plugin\tptp\tptpdc.win_ia32-TPTP-4.0.1"

⑤サービスを起動する

E:\Java\eclipse\plugin\tptp\tptpdc.win_ia32-TPTP-4.0.1\bin>net start "Agent Controller"

⑥サービスの起動を確認

E:\Java\eclipse\plugin\tptp\tptpdc.win_ia32-TPTP-4.0.1\bin>netstat -na | findstr 10002
  TCP    0.0.0.0:10002          0.0.0.0:0              LISTENING

あとは、eclipseからプロファイルを選んでアプリケーションを実行するだけ。
なんかいろいろ細かく設定できるみたいだけどとりあえずここまで。

eclipse3.1.1インストール

なんとなくエクリプスフロントページをみてみたらeclipse3.1.1がリリースされたらしい。
とりあえずインストール。なんか日本語パックも出ていたで一緒にインストール

EasyMockに触れる(2)

EasyMockで例外のテスト

テストプログラム
package sample.easymock;

import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.easymock.EasyMock.expectLastCall;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import junit.framework.TestCase;

public class SampleDAOTest extends TestCase {

	private Connection conMock;
         private Statement stMock;
	private ResultSet rsMock;

	protected void setUp() {
		// ①Mockオブジェクトの生成
		conMock = createMock(Connection.class);
		stMock  = createMock(Statement.class);
		rsMock  = createMock(ResultSet.class);
    }
	/*
	 * Test method for 'sample.easymock.SampleDAO.selectSample(Connection, String)'
	 */
	public void testSelectSample2() throws Exception {
		
		// ②期待値の設定
		expect(conMock.createStatement()).andReturn(stMock);
		expect(stMock.executeQuery("select * from sample")).andThrow(new SQLException("DB接続でえらー!!!"));
		
		replay(conMock);
		replay(stMock);
		
		// ③モックテストの実施
		SampleDAO dao = new SampleDAO();
		try {
			dao.selectSample(conMock, "select * from sample");
			fail("SQLExceptionがthrowされるはず");
		} catch(SQLException e) {
			System.out.println(e.getMessage());
		}
		
		// ④モックテストの検証
		verify(conMock);
		verify(stMock);

	}
}