言い換えれば、ユニットテストのすべてまたはほとんどにthrows Exception
を追加する必要がありますか? Android Studioでユニットテストを生成すると(コマンドN - >テストメソッド)、デフォルトで例外がスローされます。例:ユニットテストでデフォルトで「例外をスローする」べきですか?
@Test
public void someMethod() throws Exception {
}
言い換えれば、ユニットテストのすべてまたはほとんどにthrows Exception
を追加する必要がありますか? Android Studioでユニットテストを生成すると(コマンドN - >テストメソッド)、デフォルトで例外がスローされます。例:ユニットテストでデフォルトで「例外をスローする」べきですか?
@Test
public void someMethod() throws Exception {
}
私は説得力のあるケースは、すべてのテストケースがException
をスローするように宣言することを要求するために作ることができるとは思いません。
特定の例外(例外が公約の一部を形成する箇所)をスローするコードでは、テストケースでこれらの例外パスが解決され、ルートException
を使用すると、アサーションが単純化される可能性があります。同様に、おそらくがの数字が返されると主張するのではなく、任意の数値が返されることを単にアサートすることによって数値を計算するメソッドをテストすることに似ています。
さらに、チェック例外をスローするコードでは、デフォルトの文throws Exception
は、テストコードによってスローされた特定のチェック例外をマスクします。これは、あなたのテストを書くときに貴重なヒントまたは手がかりを否定します。たとえば、次のコード...
public void someMethod throws SomeMethodFailedException {
...
}
は...明示的SomeMethodFailedException
がスローされたパスをテストするテストケースの恩恵を受ける可能性があります。テストケースがデフォルトでthrows Exception
で宣言されていない場合、コンパイラはSomeMethodFailedException
がスローされたパスをテストするように通知するように効果的に機能します。
要約すると、Exception
を投げるようにすべてのテストを宣言すると、テストケース側で例外契約を踏んだり例外パスを無視したりすることができます。
あなたも例外パスをテストしながら、その宣言を持つことができますが、すべてのテストでthrows Exception
の使用がでヒント(そしておそらく奨励または検証)ないので、上記の問題はthrows Exception
と宣言するの不変の結果ではありませんテスト意味のあるテストシナリオとして例外パスを扱わないアプローチ。
Androidスタジオのデフォルトテンプレートがこのような方法でテストを作成するのであれば、そのデフォルトを変更するか、独自の「テストメソッド」ショートカットを作成することができます。
あなたはテストであまりにも多くの例外を使用するべきではありません。実際には(ほとんどの場合は)それらをまったく使用しないでください。
ユニットテストは、機能しているかどうかを確認する機能です。
あなたは、より明確で効果的なテストになる、アサーションを使用して関数をテストする方法を見つける必要があります。
ユニットテストメソッドにデフォルトでスローを追加する有効な理由はありません。しかし、そのオプションはデフォルトでコードテンプレートに設定することができます – alainlompo