A class library for unit testing with fixtures described by .xlsx file.
- FixtureBook とは
FixtureBook とは単体テストで使用するデータを .xlsx ファイルに記述できるようにするための仕組みです。
FixtureBook を使うと、.xlsx ファイル上に記述した以下のようなデータを JUnit や Spock で簡単に利用することができます。
- テスト前にDBテーブルに登録しておきたいデータ内容。
- テスト対象メソッドの引数等として利用するオブジェクトのプロパティ値。
- テスト対象メソッドを実行して取得できた結果と照合するための予想結果。
- テスト後のDBテーブルのあるべき状態を表すデータ。
Webアプリケーションのバックエンドロジック等、 データベースの入出力を中心としたクラスのテストに向いています。
テストコードが非常にシンプルになります。
例えば、JUnit の場合、
@Test
public void getAllEmployees__データベーステーブルEMPLOYEE上の全データが取得できる() {
FixtureBook.expectReturn();
}
あるいは、Spock の場合、
def "getAllEmployees__データベーステーブルEMPLOYEE上の全データが取得できる"() {
expect: FixtureBook.expectReturn()
}
というコードだけで、
- データベースに必要なデータをセットアップし、
- テスト対象の getAllEmployees メソッドに引数として渡すオブジェクトを作成し、
- テスト対象の getAllEmployees メソッドを実行し、
- その戻り値を予想結果と比較する
という処理が行えます。
- pom.xml や build.gradle に dependency 設定をして
- db.properties に データベースへの接続設定をする
だけで使い始められます。
利用するのは FixtureBook
クラスだけです。
- セットアップ
Maven セントラルリポジトリに登録されていますので、 pom.xml や build.gradle に dependency の記述をすれば利用可能になります。
<dependency>
<groupId>com.xpfriend</groupId>
<artifactId>fixture-book</artifactId>
<version>[5,)</version>
<scope>test</scope>
</dependency>
...
repositories {
mavenCentral()
}
dependencies {
...
testCompile group: 'com.xpfriend', name: 'fixture-book', version: '5.+'
...
}
- Java コンパイラは JDK1.6 (Java6) 以上を使用してください。
データベース接続設定はクラスパス上に(例えば、Maven のディレクトリ構成だと src/test/resources フォルダに) 置いた db.properties ファイルに以下のように記述します。
driverClassName=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
username=scott
password=tiger
複数の接続先を利用する場合は、上記と同様の内容のファイルを名前を変えて同じフォルダに複数作成してください。 この場合、db.properties ファイルはデフォルトの接続先情報として使用され、 それ以外の名前のファイルは FixtureBook (.xlsxファイル) で明示的に指定した場合に使用されます。
例えば、SQLServer.properties というファイルを作成した場合、 FixtureBook のテーブル名指定箇所に
[テーブル名]@SQLServer
という形式で接続名の指定を行えば、 db.properties の代わりに、SQLServer.properties に記述されている接続情報が使用されます。
- 利用方法
以下のドキュメントを参照してみてください。