LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-03

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

・私が開発しているJava単体テスト(Unitテスト)ライブラリArteryの使用サンプルを紹介します。当記事が目次になります。

・サンプルは順次追加していきます。

・なお、Arteryにはアルゴリズムライブラリも含まれています。こちらを参照してください。
  Javaアルゴリズムライブラリ-Artery-サンプル

・Arteryライブラリは、以下よりダウンロードできます。
  ベクター⇒プログラミング⇒Java言語
  version202005 - 2020/05/13 リリース

Arteryライブラリは商用も含めて無償で使用することができます。

機能の概要

  • 検証メソッドの種類
    • 二つのオブジェクトの等値判定
    • 二つのオブジェクトの同一オブジェクト判定
    • 真偽判定
    • ArValidatorによる妥当性判定
    • null/empty判定
    • sucess/fail宣言
    • コンテナ(Set,List,配列など)の要素の包含判定
    • コンテナ同士の包含判定
    • 数値のゼロ/非ゼロ判定
    • 二つの数値の大小判定
    • Date,Calendar,long,ArDateの現在日判定
    • Date,Calendar,long,ArDateの現在日時判定
    • Date,Calendar,long,ArDateの現在曜日判定
    • Date,Calendar,long,ArDateの指定曜日判定
    • 二つのDate,Calendar,long,ArDateの時刻を無視した同一日判定
    • オブジェクトが指定のクラスであるか判定
    • 二つのオブジェクトの同一クラス判定
  • success/failの集計
  • ログファイルへの出力
  • 出力レベルの調整、フル出力,NGのみ,集計のみ
  • テスト結果報告書作成
  • 実行時間計測
  • スタックトレース取得

簡単な使い方(01)

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

基本的な判定処理(02)

  • 等値判定 - 二つのオブジェクトが同じ値であるかを判定する
  • 同一オブジェクト判定 - 二つのオブジェクトが同一オブジェクトであるかを判定する
  • 真偽判定 - 指定オブジェクトがtrue/falseであるかを判定する
  • 妥当性判定 - 指定オブジェクトがArValidatorに合致するかを判定する
  • null判定 - 指定オブジェクトがnullであるかを判定する
  • empty判定 - String,Set,List,Mapなどが空であるかを判定する
  • sucess/Fail宣言 - テストの成功・失敗を宣言する

等値判定 - 二つのオブジェクトが同じ値であるかを判定する

ArTest.java
  /** 二つのオブジェクトが等しいか判定する. */
  public static boolean equals(String identifier,String name0,Object value0,String name1,Object value1)
  /** 二つのオブジェクトが等しくないか判定する. */
  public static boolean notEquals(String identifier,String name0,Object value0,String name1,Object value1) 

数値の等値判定
配列の等値判定
★List,Set
★Map

同一オブジェクト判定 - 二つのオブジェクトが同一オブジェクトであるかを判定する

ArTest.java
  /** 二つのオブジェクトが同一オブジェクトか判定する. */
  public static boolean same(String identifier,String name0,Object value0,String name1,Object value1)
  /** 二つのオブジェクトが同一オブジェクトでないか判定する. */
  public static boolean notSame(String identifier,String name0,Object value0,String name1,Object value1)

★[同一オブジェクト判定]

真偽判定 - 指定オブジェクトがtrue/falseであるかを判定する

ArTest.java
  /** boolean値がtrueであるか判定する.*/
  public static boolean isTrue(String identifier,String name,boolean value) 
  /** boolean値がtrueであるか判定する. */
  public static boolean isFalse(String identifier,String name,boolean value)

★[真偽判定]

妥当性判定 - 指定オブジェクトがArValidatorに合致するかを判定する

ArTest.java
  /** オブジェクトが妥当であるかを判定する. */
  public static <T> boolean isValid(String identifier,String checkerName,ArValidator<T> checker,String objName,T object)  /** オブジェクトが妥当でないことを判定する. */
  public static <T> boolean isNotValid(String identifier,String checkerName,ArValidator<T> checker,String objName,T object)

ArValidatorによるオブジェクトの妥当性判定

null判定 - 指定オブジェクトがnullであるかを判定する

ArTest.java
  /** オブジェクトがnullであるか判定する. */
  public static boolean isNull(String identifier,String name,Object value)
  /** オブジェクトがnullでないか判定する. */
  public static boolean isNotNull(String identifier,String name,Object value)

empty判定 - String,Set,List,Mapなどが空であるかを判定する

ArTest.java
  /** データがあることを判定する.対象は以下のオブジェクト.String,List,Set,Map,ArMapOnMap,ArBiMap,ArMatrix.  */
  public static boolean isNotEmpty(String identifier,String name,Object value)
  /** データがないことを判定する.対象は以下のオブジェクト.String,List,Set,Map,ArMapOnMap,ArBiMap,ArMatrix. */
  public static boolean isEmpty(String identifier,String name,Object value)

★[empty判定]

Sucess/Fail宣言 - テストの成功・失敗を宣言する

ArTest.java
  /** テストの成功を宣言する.返値は常にtrue. */
  public static boolean success(String identifier,String message)
  /** テストの失敗を宣言する.返値は常にfalse. */
  public static boolean fail(String identifier,String message)

★[success,fail]

包含判定処理(03)

 ・コンテナ(Set,List,配列など)が指定要素を含んでいるかを判定する.
 ・コンテナ同士の包含関係を判定する

要素の包含判定

ArTest.java
  /** 要素がCollectionに含まれるかをチェックする. */
  public static <T> boolean contains(String identifier,String nameSet,Collection<T> set,String nameElement,T element)
  /** 要素がCollectionに含まれないか判定する. */
  public static <T> boolean notContains(String identifier,String nameSet,Collection<T> set,String nameElement,T element)
  /** 要素が配列に含まれるか判定する. */
  public static <T> boolean contains(String identifier,String nameArray,T[] array,String nameElement,T element)
  /** 要素が配列の中に含まれなていないか判定する. */
  public static <T> boolean notContains(String identifier,String nameArray,T[] array,String nameElement,T element)

★[Collectionの要素包含判定]
★[配列の要素包含判定]

コンテナの包含判定

ArTest.java
  /** collecitoniBの要素がすべてcollectioinAに含まれるかをチェックする. */
  public static <T> boolean contains(String identifier,String nameA,Collection<T> collectionA,String nameB,Collection<T> collectionB)
  /** collectionBの要素の中でcollectionAの中に含まれないものがあるか判定する. */
  public static <T> boolean notContains(String identifier,String nameA,Collection<T> collectionA,String nameB,Collection<T> collectionB)
  /** 配列Bの要素がすべて配列Aに含まれるか判定する. */
  public static <T> boolean contains(String identifier,String nameA,T[] arrayA,String nameB,T[] arrayB)
  /** 配列Bの要素の中で配列Aの中に含まれないものがあるか判定する. */
  public static <T> boolean notContains(String identifier,String nameA,T[] arrayA,String nameB,T[] arrayB)
  /** mapAがmapBのペアをすべて含んでいるかを判定する. */
  public static <T0,T1> boolean contains(String identifier,String name0,Map<T0,T1> mapA,String name1,Map<T0,T1> mapB)
  /** mapBの要素の中でmapAに含まれていないものがあるかを判定する. */
  public static <T0,T1> boolean notContains(String identifier,String name0,Map<T0,T1> mapA,String name1,Map<T0,T1> mapB)

★[Set同士の包含判定]
★[配列同士の包含判定]
★[Map同士の包含判定]

数値判定処理(04)

 ・ゼロ・非ゼロ判定
 ・二つの数値の大小判定

ゼロ・非ゼロ判定

ArTest.java
  /** 値がゼロか判定する.対象は以下のタイプ.BigDecimal, Byte, Double, Float, Integer, Long, Short  */
  public static boolean isZero(String identifier,String name,Number value)
  /*** 値がゼロでないか判定する.対象は以下のタイプ.BigDecimal, Byte, Double, Float, Integer, Long, Short */
  public static boolean isNotZero(String identifier,String name,Number value)

二つの数値の大小判定

ArTest.java
  /** 二つの数値が等しいか判定する.Integer,Long,Float,Double,BigDecimalに対応.両方のタイプが違っていてもよい. */
  public static boolean equals(String identifier,String name0,Number value0,String name1,Number value1)
  /** 二つの数値が等しくないか判定する.Integer,Long,Float,Double,BigDecimalに対応.両方のタイプが違っていてもよい. */
  public static boolean notEquals(String identifier,String name0,Number value0,String name1,Number value1)
  /** value0 < value1であるかを判定する.Integer,Long,Float,Double,BigDecimalに対応.両方のタイプが違っていてもよい. */
  public static boolean lessThan(String identifier,String name0,Number value0,String name1,Number value1)
  /** value0 <= value1であるかを判定する.Integer,Long,Float,Double,BigDecimalに対応.両方のタイプが違っていてもよい. */
  public static boolean lessEqual(String identifier,String name0,Number value0,String name1,Number value1)
  /** value0 > value1であるかを判定する.Integer,Long,Float,Double,BigDecimalに対応.両方のタイプが違っていてもよい. */
  public static boolean greaterThan(String identifier,String name0,Number value0,String name1,Number value1)
  /** value0 >= value1であるかを判定する.Integer,Long,Float,Double,BigDecimalに対応.両方のタイプが違っていてもよい. */
  public static boolean greaterEqual(String identifier,String name0,Number value0,String name1,Number value1)

上記以外の判定処理はArValidatorを使用する

 ・以下のメソッドに数値判定用のArValidatorを渡して使用する

ArTest.java
  /** オブジェクトが妥当であるかを判定する. */
  public static <T> boolean isValid(String identifier,String checkerName,ArValidator<T> checker,String objName,T object)
  /** オブジェクトが妥当でないことを判定する. */
  public static <T> boolean isNotValid(String identifier,String checkerName,ArValidator<T> checker,String objName,T object) 

数値判定(Q04_00)

日付・時刻・曜日判定処理(05)

・以下の機能がある。
 ・現在日判定
 ・現在日時判定
 ・現在曜日判定
 ・指定曜日判定
 ・同一日判定

現在日判定

・ArDate,Date,Calendar,longが現在日であるか判定する。

ArTest.java
  /** 現在日と一致するか判定する. */
  public static boolean currentDate(String identifier,String name,ArDate date)
  /** 現在日と一致するか判定する. */
  public static boolean currentDate(String identifier,String name,java.util.Date date)
  /** 現在日と一致するか判定する. */
  public static boolean currentDate(String identifier,String name,java.util.Calendar cal)
  /** 現在日と一致するか判定する. */
  public static boolean currentDate(String identifier,String name,long time)

現在日の判定

現在日時判定

・Date,Calendar,longが現在日時であるかを判定する。
 ・許容誤差を分単位で指定する。

ArTest.java
  /** 現在日時と一致するか判定する.diffは許容範囲(分) */
  public static boolean currentTime(String identifier,String name,java.util.Date date,int diff)
  /** 現在日時と一致するか判定する.diffは許容範囲(分). */
  public static boolean currentTime(String identifier,String name,java.util.Calendar cal,int diff)
  /** 現在日時と一致するか判定する.diffは許容範囲(分). */
  public static boolean currentTime(String identifier,String name,long time,int diff)

Date,Calendar,longが現在日時であるかを判定する(許容誤差を分単位で指定する)

現在曜日判定

・ArDate,Date,Calendar,long,ArYoubiが現在曜日であるかを判定する。

ArTest.java
  /** 現在曜日と一致するか判定する. */
  public static boolean currentYoubi(String identifier,String name,ArDate date)
  /** 現在曜日と一致するか判定する. */
  public static boolean currentYoubi(String identifier,String name,java.util.Date date)
  /** 現在曜日と一致するか判定する. */
  public static boolean currentYoubi(String identifier,String name,java.util.Calendar cal)
  /** 現在曜日と一致するか判定する. */
  public static boolean currentYoubi(String identifier,String name,long time)
  /** 現在曜日と一致するか判定する. */
  public static boolean currentYoubi(String identifier,String name,ArYoubi youbi)

現在曜日の判定(日付は違ってもよい)-Q05_03

指定曜日判定

・ArDate,Date,Calendar,long,ArYoubiが指定曜日であるかを判定する。

ArTest.java
  /** 指定曜日と一致するか判定する. */
  public static boolean youbiEquals(String indentifier,String name,ArDate date,String youbiString,ArYoubi youbi)
  /** 指定曜日と一致するか判定する. */
  public static boolean youbiEquals(String indentifier,String name,java.util.Date date,String youbiString,ArYoubi youbi)
  /** 指定曜日と一致するか判定する. */
  public static boolean youbiEquals(String indentifier,String name,java.util.Calendar cal,String youbiString,ArYoubi youbi)
  /** 指定曜日と一致するか判定する. */
  public static boolean youbiEquals(String indentifier,String name,long time,String youbiString,ArYoubi youbi)
  /** 指定曜日と一致するか判定する. */
  public static boolean youbiEquals(String indentifier,String name,ArYoubi youbi0,String youbiString,ArYoubi youbi1)

指定曜日の判定(日付は問わない)

同一日判定

・ArDate,Date,Calendar,longが同一日であるかを判定する。
 ・時刻が違っても同一日であるかを判定する。
 ・上記のすぺての組合せを用意している。下記はDateとCalendarの場合を示す。

ArTest.java
  /** 同一日判定 Date vs Calendar. */
  public static boolean sameDate(String identifier,String name0,Date date0,String name1,Calendar cal1)
  /** 非同一日判定 Date vs Calendar. */
  public static boolean notSameDate(String identifier,String name0,Date date0,String name1,Calendar cal1)

ArDate,Date,Calendar,longが同一日であるかを判定する

クラス判定

 ・二つのオブジェクトが同一クラスであるかを判定する、
 ・オブジェクトが指定のクラスであるかわ判定する。

ArTest.java
  /** 二つのオブジェクトが同一クラスか判定する.  */
  public static boolean sameClass(String identifier,String name0,Object value0,String name1,Object value1)
  /** 二つのオブジェクトが同一クラスでないか判定する.  */
  public static boolean notSameClass(String identifier,String name0,Object value0,String name1,Object value1)
  /** オブジェクトが特定のクラスのオブジェクトであるか判定する. */
  public static boolean isThisClass(String identifier,String name0,Object value,String name1,Class clazz)
  /** オブジェクトが特定のクラスのオブジェクトではないか判定する. */
  public static boolean isNotThisClass(String identifier,String name0,Object value,String name1,Class clazz)

★[クラス判定]

単体テスト結果報告書の作成(06)

 ・出力形式をタブ区切りを含むものにする
 ・エクセルで読み込むことでテスト結果報告書とすることができる

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

実行時間計測(07)

★[実行時間計測]

その他(08)

スタックトレースを取得する

★[スタックとレースの取得]

JUnit4

数値の等値判定
配列の等値判定
★[JUnit4-数値の大小判定]
★[JUnit4-Listの等値判定]
★[JUnit4-Listの包含判定]
★[JUnit4-Setの等値判定]
★[JUnit4-Setの包含判定]
★[JUnit4-Mapの等値判定]
★[JUnit4-Mapの包含判定]
★[JUnit4-Stringのいろいろな判定]
★[JUnit4-真偽判定]
★[JUnit4-Success/Fail]

TestNG

0
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
0
0