LoginSignup
1
0

More than 3 years have passed since last update.

Java 単体テスト結果報告書の自動作成

Posted at

目次 ⇒ Java単体テストライブラリ-Artery-サンプル

Javaの単体テストライブラリArteryでは、単体テストの結果をタブ区切りで出力することにより、単体テスト結果報告書とすることができます。

package jp.avaj.lib.test;

/**
Java 単体テスト結果報告書の自動作成

単体テストの結果をエクセルで読込むと、テスト結果報告書の形式にすることができる。
この形式でよければ、テスト結果報告書の作成の手間を省くことができる。

 */
public class Q06_00 {

  public static void main(String[] args) {

    // 単体テスト結果報告書の作成
    // この出力をエクセルで読込むとテスト結果報告書となる
    {
      // エクセル出力の指定
      ArTest.testOutLevel = ArTestOutLevel.EXCEL;
      // テストの名称⇒先頭に表示される
      ArTestExcelEnv.systemName = "QIITAシステム単体テスト結果報告書";
      // テスト実施者⇒指定しなければテスト実施者は表示されない
      ArTestExcelEnv.testerName = "闇雲";
      // テスト実施日⇒指定しなければ yy/mm/dd となる
      ArTestExcelEnv.testDate = "12/31";
      // テスト番号の開始⇒指定しなければ 0 となる
      ArTestExcelEnv.startTestNo = 1;
    }

    // ログ出力ファイルの指定
    ArTest.startUnitTest("unittest","c:/tmp");


    ArTest.startTestCase("うるう年判定");

    boolean result;
    // 2020年はうるう年 ⇒ resultはtrueが正しい
    result = LeapYear.isLeapYear(2020);
    // 結果をチェックする.
    ArTest.isTrue("2020年","result",result);

    // 2100年は平年 ⇒ resultはfalseが正しい
    result = LeapYear.isLeapYear(2100);
    // 結果をチェックする.
    ArTest.isFalse("2100年","result",result);

    // テストケースを終了する
    ArTest.endTestCase();


    ArTest.startTestCase("キム・ベイシンガーの役名⇒映画名の変換");

    // ヴィッキー・ヴェイル ⇒ 正解はバットマン
    String movie = Kim.getMovieTitle("ヴィッキー・ヴェイル");
    // 結果をチェックする
    ArTest.equals("ヴィッキー・ヴェイル","expected","バットマン","movie",movie);

    // キャロル・マッコイ ⇒ 正解はゲッタウェイ
    movie = Kim.getMovieTitle("キャロル・マッコイ");
    // 結果をチェックする
    ArTest.equals("キャロル・マッコイ","expected","ゲッタウェイ","movie",movie);

    // テストケースを終了する
    ArTest.endTestCase();


    // すべてのテストケースの集計の表示
    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.Q06_00.main(Q06_00.java:44)
**** うるう年判定 summary ****
test count = 2
success    = 1
**** キム・ベイシンガーの役名⇒映画名の変換 start ****
OK ヴィッキー・ヴェイル:expected=バットマン:movie=バットマン
NG キャロル・マッコイ:expected=ゲッタウェイ:movie=ブロンディ
jp.avaj.lib.test.Q06_00.main(Q06_00.java:60)
**** キム・ベイシンガーの役名⇒映画名の変換 summary ****
test count = 2
success    = 1
**** total ****
total test count = 4
total success    = 2

エクセルの出力指定をした場合の結果は次のとおり

result.txt

QIITAシステム単体テスト結果報告書

**** うるう年判定 start ****
TestNo  日付  担当  結果  テスト内容 期待値   実際値
001-001 12/31   闇雲  OK  2020年 TRUE    true
001-002 12/31   闇雲  NG  2100年 FALSE   true
**** うるう年判定 summary ****
test count = 2
success    = 1
**** キム・ベイシンガーの役名⇒映画名の変換 start ****
TestNo  日付  担当  結果  テスト内容 期待値   実際値
002-001 12/31   闇雲  OK  ヴィッキー・ヴェイル  バットマン バットマン
002-002 12/31   闇雲  NG  キャロル・マッコイ ゲッタウェイ  ブロンディ
**** キム・ベイシンガーの役名⇒映画名の変換 summary ****
test count = 2
success    = 1
**** total ****
total test count = 4
total success    = 2

エクセルで読込むと次のようになる。

無題.png

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