Skip to content

taktod/junitTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 

Repository files navigation

JunitTest

概要

Junitによるテストは便利なんですが、記述をするのが面倒なので、アノーテーションの定義でかたが着くようにしてみました。 基本的に入力を記述。出力と照らし合わせるor出力をDumpする。

この2つのみを目的にしてあります。

使い方

  1. eclipseのプロジェクトにJunit4のライブラリを追加。
  2. さらにjunitTest.jarも追加。
  3. Entry用のクラスを1つ書いておく。
  4. 任意の関数に@Junitと@Testのアノーテーションをつける。
    @Junit({
    		@Test({"test", "true"})
    	})
    	public String doSomething(String str, boolean flg) {
    
    
  5. 3のクラスを実行する。
  6. 標準出力に動作結果が出力される。
    check for class:(DevelopTestEntry) method:(doSomething)
    param : test true 
    assume : @dump result : test:true
    String
    test:true
    

追加したアノーテーションはそのまま入力データと出力結果の目安になります。

アノーテーションの説明

3つのアノーテーションがあります。

  • @Junit
    Junitによる動作確認対象となる関数に付加する定義
      ({})で囲って内部にTestを定義します。
      
  • @Test
    • init
      @Initの指定のあるコンストラクタの初期化パラメーターをこのテスト時のみ別の定義を利用します。
        入力内容は@Initのvalueと同じ
        
    • value
      入力パラメーターデータすべて文字列で記述します。
        {}で囲って複数要素を定義することも可能
    • assume
      応答としてあるべき形を指定する。
  • @Init
    • value
      コンストラクタに付加する定義すべて文字列で記述します。
        {}で囲って複数要素を定義することも可能
        対象クラスインスタンスが必要になったときに、この定義をベースに仮動作させます。

###valueの定義データ

  • 数字
    "135"等文字として定義しておけば、関数の定義にあわせてnew Integer("135")といった形で初期化される。
  • 文字
    "Hello world"等文字として定義しておけばそのまま使われる。
  • 配列
    "フォーマット[要素1][要素2]..."の形で定義する。型はフォーマットよりも関数定義を優先する。
  • List
    "フォーマット[要素1][要素2]..."の形で定義すると、そのArrayListになる。
  • Set
    "フォーマット[要素1][要素2]..."の形で定義すると、そのHashSetになる。
  • Map
    "フォーマット->フォーマット[key1->value1][key2->value2]..."の形で定義すると、そのHashMapになる。
  • 任意のオブジェクト
    EntryクラスのsetUpメソッド内でsetData関数により特定のkeyに対応するvalueをセットしておくと、"#key"という形で利用できる。
  • クラス
    "$java.lang.String"という風に$を頭にいれると対象クラスオブジェクトを渡すことができる。
フォーマット指定は
boolean, char*, byte, short, int, long, float, double, string
charは動作に問題があるはずなので使わないこと推奨

###assumeの定義データ

  • @none
    出力データの確認なし。何があろうとそのままテストを実行する。
  • @ok
    出力データの確認なし。例外が発生した場合はテストを中断する。
  • @dump
    応答データを標準出力に出す。動作確認は行わない。(未定義のときのデフォルトの値)
  • @pause
    メソッドの動作確認をしたあと、Enterキーの入力を待つ
  • @dumppause
    出力をdumpした後にEnterキーの入力を待つ
  • @dumpabort
    出力をdumpした後にEnterキーの入力をまって中断
  • @abort
    Enterキーの入力をまって中断
  • @xxxException
    例外が発生することを期待する。対象例外と一致する名前の例外が発生しない場合はテストを中断する。
  • @custom[xxx]
    終了時にTestEntry継承クラス内のcustomCheck関数により判定する。true:処理続行 false:処理中断
  • 文字列
    応答データをtoStringで文字列化したときの値が一致することを期待する。それ以外の場合はエラー扱いでテスト中断。

ライセンス

一応LGPLということにしておきます。なにか問題がでた場合は適宜変更する予定

履歴

  • 2011.08.25 Junitについて知る。酔った勢いでライブラリをつくってみる。
  • 2011.08.26 共有のためgithubに公開、会社でつかってみたところ初期化がだめすぎて、使えない。
  • 2011.08.27 いろいろ機能を追加
  • 2011.08.28 WindowsXPで動作するように動作を若干変更。また例外がJunitの例外になるように細工。
  • 2011.08.30 Testアノーテーションにクラス初期化のパラメータ指定をいれれるようにした。
    assumeの定義にcustomを追加し、プロジェクト固有の判定を実施できるようにした。

やることメモ

  • ほかのプログラムを作成しつつ、なにか欲しい機能が増えたら互換性を残しつつバージョンをあげていく。
  • char型の扱いまわりにバグがあるはずなので、対処しておく。
  • 関数定義ごとにRunの対象を自動で増やせるようにしたい。

About

junitのテストの補助プログラム

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages