目次 ⇒ Java単体テストライブラリ-Artery-サンプル
package jp.avaj.lib.test;
/**
単体テストライブラリの簡単な使い方
・テストメソッドは他にもあるが、最も頻度の高いものとして以下のメソッドの使用例を紹介する.
・isTrue ⇒ 与えられた引数がtrueであるかを判定する.
・isFalse ⇒ 与えられた引数がfalseであるかを判定する.
・equals ⇒ 与えられた二つの引数が等しいかを判定する.
・この使用例で以下のメソッドも使ったが、デバッグで使用する場合などでは使わなくてもよい
・startUnitTest
・startTestCase
・endTestCase
・reportTotalSummary
*/
public class Q01_00 {
public static void main(String[] args) {
// メッセージを表示しない⇒注、サマリだけは表示される
// 今回はコメントにしておく
// ArTest.testOutLevel = ArTestOutLevel.NONE;
// NGが発生したら停止する.
// 今回はコメントにしておく.
// ArTest.testIfError = ArTestIfError.ABORT;
/*
・単体テストを開始する.
・ログをファイルに出力したいときに使用する、画面に表示するだけでよければ不要
・テスト名とログ出力ディレクトリを指定する.
・テスト名はログファイル名の一部になる.
・ディレクトリはあらかじめ作成しておくこと.
*/
ArTest.startUnitTest("unittest","c:/tmp");
// テストケースを開始する、OK/NGの統計がいらなければ不要
ArTest.startTestCase("うるう年判定クラスのテスト");
boolean result;
// 2020年はうるう年 ⇒ resultはtrueが正しい
result = LeapYear.isLeapYear(2020);
/*
・結果をチェックする.
・最初の引数はテストの目的や内容を記述する,ライブラリ的にはコメント.
・二番目の引数は判定したい変数の名称を記述する.ライブラリ的にはコメント.
・三番目の引数は判定したい変数を記述する.
*/
ArTest.isTrue("2020年","result",result);
// 2100年は平年 ⇒ resultはfalseが正しい
result = LeapYear.isLeapYear(2100);
/*
・結果をチェックする.
・最初の引数はテストの目的や内容を記述する,ライブラリ的にはコメント.
・二番目の引数は判定したい変数の名称を記述する,ライブラリ的にはコメント.
・三番目の引数は判定したい変数を記述する.
・NGの場合は、行番号が表示される
*/
ArTest.isFalse("2100年","result",result);
//
// テストケースを終了する⇒テストケース内での集計が表示される、startTestCaseしていなければ不要
ArTest.endTestCase();
L.p("");
// テストケースを開始する、OK/NGの統計がいらなければ不要
ArTest.startTestCase("キム・ベイシンガーの役名⇒映画名の変換クラスのテスト");
// ヴィッキー・ヴェイル ⇒ 正解はバットマン
String movie = Kim.getMovieTitle("ヴィッキー・ヴェイル");
/*
・結果をチェックする
・最初の引数はテストの目的や内容を記述する,ライブラリ的にはコメント.
・二番目の引数は期待値の変数名.,ライブラリ的にはコメント. ⇒ ここでは期待値は直接記述しているので"expected"と指定
・三番名の引数は期待値
・四番名の引数は判定したい変数の変数名.,ライブラリ的にはコメント.
・五番名の引数は判定したい変数
*/
ArTest.equals("ヴィッキー・ヴェイル","expected","バットマン","movie",movie);
// キャロル・マッコイ ⇒ 正解はゲッタウェイ
movie = Kim.getMovieTitle("キャロル・マッコイ");
/*
・結果をチェックする
・最初の引数はテストの目的や内容を記述する,ライブラリ的にはコメント.
・二番目の引数は期待値の変数名,ライブラリ的にはコメント. ⇒ ここでは期待値は直接記述しているので"expected"と指定
・三番名の引数は期待値
・四番名の引数は判定したい変数の変数名,ライブラリ的にはコメント.
・五番名の引数は判定したい変数
・NGの場合は、行番号が表示される
・蛇足、ブロンディでの役名はカレン・マッコイ
*/
ArTest.equals("キャロル・マッコイ","expected","ゲッタウェイ","movie",movie);
// テストケースを終了する⇒テストケース内での集計が表示される、集計データがいらなければ不要
ArTest.endTestCase();
L.p("");
// すべてのテストケースの集計の表示、集計データがいらなければ不要
ArTest.reportTotalSummary();
}
//////////// 以下はテスト対象のクラス
/** うるう年判定クラス(もしかしたらバグがあるかも). */
static class LeapYear {
public static boolean isLeapYear(int year) {
return ((year % 4) == 0);
}
}
/** キム・ベイシンガーの役名⇒映画名の変換クラス(もしかしたらバグがあるかも). */
static class Kim {
public static String getMovieTitle(String name) {
if ("ヴィッキー・ヴェイル".equals(name)) { return "バットマン"; }
if ("キャロル・マッコイ".equals(name)) { return "ブロンディ"; }
// その他は省略
return null;
}
}
}
結果は次のとおり。
result.txt
**** うるう年判定クラスのテスト start ****
OK 2020年:result=true
NG 2100年:result=true
jp.avaj.lib.test.Q01_00.main(Q01_00.java:63)
**** うるう年判定クラスのテスト summary ****
test count = 2
success = 1
**** キム・ベイシンガーの役名⇒映画名の変換クラスのテスト start ****
OK ヴィッキー・ヴェイル:expected=バットマン:movie=バットマン
NG キャロル・マッコイ:expected=ゲッタウェイ:movie=ブロンディ
jp.avaj.lib.test.Q01_00.main(Q01_00.java:97)
**** キム・ベイシンガーの役名⇒映画名の変換クラスのテスト summary ****
test count = 2
success = 1
**** total ****
total test count = 4
total success = 2