DJunitの使い方

1.1.  値を確認する場合

テスト実行後に、Beanに設定されている値等が想定どおりか確認するために使用します。

assertEquals(比較1, 比較2);

 

比較1:比較対照1(オブジェクト、文字列、プリミティブ何でも指定可能)

比較2:比較1と値が同じであると想定される値(何でも指定可能)

Ex). assertEquals(bean.getInquiryTermParam(), "1")

                      ↑このBeanの戻りが、1になっているかをチェック

 

 

1.2.   例外の発生を確認する場合

テスト実行時に、例外が発生することが想定されている場合、想定どおりの例外が発生したかを確認するために使用します。

assertException(発生した例外のインスタンス, 想定される例外クラス名);

 

発生した例外のインスタンス(Throwable):該当メソッドのtry catchによりキャッチされた例外

想定される例外クラス名(String):発生が想定される例外のクラス名

 

Ex).

try{

        target.doPost();

     }catch(Throwable e){

        // 例外のチェック

        assertException(e, "mbk.exception.McFatalException");

     }

 

 

 

1.3.   メソッドの戻り値を想定値に変更する

単体テストの実施であるため、他クラスの機能を確認する必要はありません。

そのため、他クラスが作成中であっても想定値で他クラスのメソッド戻りを取得したい場合は、以下のように設定してください。

ただし、複数回実行されるメソッドの場合下記設定だと一回のみが想定値となってしまいますので、「複数回実行されるメソッドを常に一定の返却値にする」を参照してください。

 

addReturnValue(対象クラス名, メソッド名, 返却値)

 

対象クラス名String):戻り値を規定したいクラス名(フルパス指定)

メソッド名String):戻り値を規定するメソッド名

返却値(Object):規定する戻り値(プリミティブ型の場合は、ラッパークラスのオブジェクトを設定してください。)――ただし、nullを設定することはできません。Nullを返却したい場合は、以下を利用してください。

addReturnNull(対象クラス名, メソッド名)

 

 

1.4.メソッドの無効化

2.3の機能を利用し、voidメソッドの処理を無効化することも可能です。これは、戻り値を設定しなければ、無効化します。

addReturnValue(対象クラス名, メソッド名)

 

 

1.5.例外を発生させる

同様に、該当メソッドでの例外を発生させることも可能です。これは、戻り値オブジェクトに例外を記述していれば、該当メソッドを呼び出す場合に例外がThrowされます。

addReturnValue(対象クラス名, メソッド名, new 例外クラス)

 

Ex) addReturnValue("java.util.Properties", "load", new IOException())

                                           ↑発生させたい例外を定義する

 

 

 

1.6.複数実行するメソッドの戻りを回数指定で変更する

複数回実行されるメソッドの戻りを、回数指定で変更することも可能です。

setReturnValueAt(対象クラス名, メソッド名, インデックス, 返却値)

 

対象クラス名String):戻り値を規定したいクラス名(フルパス指定)

メソッド名String):戻り値を規定するメソッド名

インデックスint):何回目にメソッドが呼ばれたときの設定かの回数指定(0スタート)

返却値(Object):規定する戻り値

 

ex) setReturnValueAt("mbk.util.McDexLogging", "println", 2, new Exception())

println3回目にコールされた場合に、例外が発生します。

 

戻り値にNullを指定したい場合は、以下のように設定してください。

setReturnNullAt(対象クラス名, メソッド名, インデックス, 返却値)

 

 

1.7.複数実行するメソッドの戻りを常に一定の返却値にする

複数回実行されるメソッドの戻りを常に一定の想定値にする場合は、以下のように設定してください。

setReturnValueAtAllTimes(対象クラス名, メソッド名, 返却値)

 

対象クラス名String):戻り値を規定したいクラス名(フルパス指定)

メソッド名String):戻り値を規定するメソッド名

返却値(Object):規定する戻り値

 

戻り値にNullを指定したい場合は、以下のように設定してください。

setReturnNullAtAllTimes(対象クラス名, メソッド名, 返却値)

 

 

1.8.クラスのイニシャライザを無効化する

クラスのイニシャライザを無効化したい場合は、以下のように設定してください。

addReturnValue(対象クラス名,  "")

                            ↑メソッド名に、この固定値を利用すると

                      イニシャライザが無効化します。

 

 

1.9.コンストラクタを差し替える

コンストラクタを差し替えるというよりは、コンストラクタの返却値を指定すれば期待する動きを設定することができます。

addReturnValue(対象クラス名,  "", クラスのインスタンス生成)

 

対象クラス名String):コンストラクタを指定したいクラス名(フルパス)

クラスのインスタンス生成Object):該当クラスのインスタンスを指定

 

メソッド名欄が「」となることで該当処理が行えます。

 

Ex)addReturnValue("java.io.FileWriter", "", new FileWrite("./test.csv")

上記指定により、FileWriterが生成される場合は規定したFileWriterが作成されます。ただし、このメソッドは一回目のみ有効となるので複数回生成されるクラスのコンストラクタを常に規定したい場合は、以下のように設定してください。

setReturnAtAllTimes(対象クラス名,  "", クラスのインスタンス生成)

 

 

1.10.インナークラスのメソッドの戻りを設定する

インナークラスのメソッドの戻りを想定値とする場合は、対象クラス名を以下のように設定してください。

クラス名 + '$' + インナークラス名

 

ex) addReturnValue("jp.co.dgic.AClass$InnerClass", "method", "value");

 

 

1.11.メソッドが呼ばれていること/呼ばれていないことを確認する

メソッドが呼ばれていることを、テストクラスから確認するには以下のように設定してください。

assertCalled (対象クラス名メソッド名)

 

逆に、メソッドが呼ばれていないことを確認するには以下のように設定してください。

assertNotCalled (対象クラス名メソッド名)

 

また、何回呼ばれているかを確認するために以下のように設定することも可能です。

int count = getCallCount(対象クラス名メソッド名);

assertEquals(10, count);

 

対象クラス名String):戻り値を規定したいクラス名(フルパス指定)

メソッド名String):戻り値を規定するメソッド名

 

 

1.12.メソッドの引数を確認する

メソッドの引数に正しい値が渡っているのかを確認するには以下のように設定してください。これは複数回よばれた場合は、一回目のメソッドの引数を確認します。

getArgument (対象クラス名メソッド名, インデックス )

 

対象クラス名String):戻り値を規定したいクラス名(フルパス指定)

メソッド名String):戻り値を規定するメソッド名

インデックスint):メソッドの引数が並んでいる順(0からスタート)

 

ex)getMessage(String type, int msg)というメソッドの引数を確認する場合は、getArgument("jp.co.Sample", "getMessage", 0)と指定すると、String typeに渡された引数を確認できます。インデックスに2を指定すると int msgに渡された引数を確認できます。

複数回実行されるメソッドの引数を確認するには、以下のように設定してください。

getArgument (対象クラス名メソッド名, インデックス1、 インデックス2 )

 

対象クラス名String):戻り値を規定したいクラス名(フルパス指定)

メソッド名String):戻り値を規定するメソッド名

インデックス1int):実行回数(0からスタート)

インデックス2int):メソッドの引数が並んでいる順(0からスタート)

 

 

 

你可能感兴趣的:(JUNIT,java)