Junitテストコンストラクタ


コンストラクション関数はテスト者にとって自分のしっぽを噛むようなものです!また、コンストラクション関数には何かテストがあると考えているテスト者もいます.しかし、ユニットテストを行う以上、構造関数もテストしなければなりません.
構造関数をテストするにはどうすればいいですか?
[b]アイデア1:[/b]
コンストラクション関数によってオブジェクトを作成できることを知っています.テストではassertEquals()メソッドがよく考えられます.このようにテストは非常に簡単で、このようにテストを行うと、コードを1行書くだけで十分です.しかし、期待値を作成する場合は、問題がなく、テストするコンストラクション関数を使用する必要があります.このようなテストは少し満足しにくい.
分析を通じて、アイデア1を最良のテスト方法ではないように設定します.では、構造関数をテストするために最適なテスト方法をどのように見つけたらいいのでしょうか.
[b]コツ:[/b]
クラスに読み取り可能なプロパティ値がある場合は、コンストラクション関数に渡されたパラメータと比較することができます.ここで、読み取り可能な属性値は、直接的な変数ドメインであってもよいし、getメソッドで取得してもよい.
[b]注意:[/b]
テストにとって最も一般的なテストクラスの方法は、publicインタフェースを完全に通過することです.これを基準にすると、特定の動作を検証するためにクラスにpublicインタフェースを追加して必要なデータを取得する必要がある場合があります.
最も簡単なコンストラクション関数のテストプログラム:生成されたオブジェクトの内部状態を暴露し、コンストラクション関数に渡されるパラメータが正しい属性値に設定されているかどうかを検証します.例:

public void testInitializationParameters(){
assertEquals(762, new Integer(762).intValue());
}

intValue()メソッドを使用してIntegerオブジェクト内の属性値を取得し、コンストラクション関数に渡されたパラメータがオブジェクトに正しく格納されているかどうかを確認します.getメソッドはここのintValueメソッドに相当します.
クラスに読み取り可能なプロパティ値が表示されない場合は、構造関数の正確性を検証するために観測可能なブレークポイントを別途作成する必要があります.例:

public void testInitizationParameters(){
BankDepositCommand command = new BankDepositCommand(
"123", Money.dollars(125,50),today());
assertTrue(command.isValid());
}

以上のテクニックはJavaBeanをテストするために使用できます.
[b]議論のまとめ:[/b]
多くのテストは簡単に見え、テストを書く必要がないと思っている人も多い.しかし、場合によっては、テストを書く必要がないと考えている場所がプログラムの欠陥を招いている可能性があります.エラーの発生確率を下げたい場合は、どんなに簡単であってもテストを書いてください.