1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?