JUnit(DJUnit)について | 半角全角な部屋

JUnit(DJUnit)について

先日、JUnit(JAVAの単体テストツール)なるものを使いました。
説明もないまま、これ使ってテストしてとサンプルソースも渡されて…
自分と同じような境遇の人もいるかもしれませんのでここで簡単に紹介したいと思います。

会社の環境なので、テスト環境は構築済みとして用いるメソッドについて紹介します。

JUnit
二つのオブジェクトをequalsメソッドで比較して等しければ成功・等しくなければ失敗とします。
assertEquals("TestName001", Object, Object);
二つのオブジェクトを比較演算子で比較して等しければ成功・等しくなければ失敗とします。
assertSame("TestName002"), Object, Object);

比較対照が文字列の場合はassertEquals、それ以外の場合はassertSameと覚えておきましょう。

↓詳しい説明
assertEqualsとassertSameの違いについて
Object.equalsメソッドの動作に関しては不明なのでここでは書きませんがこの二つのメソッドの挙動が
どう違うのか実例をもとに説明します。

assertEquals("","");
これは成功

assertSame("","");
これは失敗

理由は、equalsメソッドは実際に文字列を比較しているのに対し、Sameメソッドのほうはアドレスしか
見ていないからです。

assertSameでも成功する例
String str="";
String str2=str;
assertSame(str,str2);
この場合は、二つのアドレスは等しいので成功となります。もちろんequalsも成功します。
この事象がありえるテスト環境というのは、テスト用データとテスト対象データが同じ場所を参照している
場合に考えられます。文字列の比較にSameを使っている開発環境もあるかもしれませんがそこは現場の事情
なのかもしれません。。

他にも
ObjectがNullなら成功とする
aseartNull("TestName003", Object);
trueの時にテスト成功とする
aseartTrue("TestName003", boolean);
があります。
aseartTrueは必須ではありませんが、テストの正しい道順を示すメモとして使われます
例:aseartTrue(true);

テスト失敗とする。
fail("テストに失敗");

DJUnitについては次回に…

説明足りないという方は
JAVAの道
http://www.javaroad.jp/opensource/js_junit2.htm
該当ページへの直リンクとなるのでリンクタグは控えます。