最近、サービスのメソッドが間違ったパラメーターで呼び出されたときに問題が発生しました。なんらかの停止が発生したので、今後どうやって防ぐかを考えています。
したがって、次の方法があると仮定します。
public boolean doSomething(String param1, String param2);
このメソッドが呼び出されるたびに(サービスのどこに関係なく)、param1
値が特定である(たとえば、のみString1
でString2
ありString3
、そのための有効なパラメーター値になる)ことを確認したいと思います。
たとえばユニットテストでこれを検証するためのテクノロジー/ライブラリ/ツールはありますか?
更新:受け入れられた回答が示唆するように、単体テストは動作テスト用であるため、これは単体テストでカバーすべきではありません。将来の間違った呼び出しを防ぐのは、使用するPreconditions
か、単純なパラメーターチェックだけです。
可能であれば、テストを実行時に延期するのではなく、コンパイル時のチェックを活用する必要があります。正当な値が3つしかない場合は、おそらく。ではなくであるparam1
必要があります。enum
String
単体テストは、メソッドが特定の方法で動作することを確認するためのものです。彼らはその方法をブラックボックスのように扱い、外側からそれを突く。あなたがそれがどのように呼ばれるかについて心配しているなら、彼らは助けにはなりません。ここで、メソッドの内部にいて、外の世界が正常に動作していることを確認したいと考えています。これを行う方法は、メソッドの開始時に実行時の前提条件チェックを使用することです。
public boolean doSomething(String param1, String param2) {
if (!Objects.equals(param1, "String1") &&
!Objects.equals(param1, "String2") &&
!Objects.equals(param1, "String3"))
{
throw IllegalArgumentException("param1 must be String1, 2, or 3");
}
...
}
Guavaの前提条件クラスが役立つ場合があります。
public boolean doSomething(String param1, String param2) {
Preconditions.checkArgument(
Objects.equals(param1, "String1") ||
Objects.equals(param1, "String2") ||
Objects.equals(param1, "String3"),
"param1 must be String1, 2, or 3"
);
...
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加