LoginSignup
1
0

More than 3 years have passed since last update.

Java Artery-単体テストライブラリの簡単な使い方

Posted at

目次 ⇒ 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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0