2

文字列をパラメーターとして取り、それが不正な場合は例外をスローするメソッドの単体テストを作成しようとしています (問題がない場合は NONE)。いくつかの文字列と予想される例外をフィードするパラメータ化されたテストを書きたいと思います (入力文字列が整形式の場合に何もスローされない場合を含みます!)。@Test(expect=SomeException.class) アノテーションを使用しようとすると、次の 2 つの問題が発生しました。

  1. expect=null は許可されていません。では、NO 例外がスローされると予想される結果をテストするにはどうすればよいでしょうか (整形式の入力文字列の場合)。

  2. 期待=不可能?私はまだ試していませんが、これを読んだ後、これが事実であると強く疑っています (これが本当かどうか述べていただけますか?): http://tech.groups.yahoo.com/group/junit/message/19383 Thisそれから私が見つけた最良の解決策のようです。特にそれと比較して、それについてどう思いますか: パラメータ化されたテストで例外をテストするにはどうすればよいですか?

事前に助けてくれてありがとう、私は議論を楽しみにしています:)

4

3 に答える 3

5

2 つのテスト ケース クラスを作成します。

  • ValidStringsTest
  • InvalidStringsTest

明らかに、最初のものはすべての種類の有効な入力をテストし (例外をスローしません)、2 番目のものは常に例外を予期します。

覚えておいてください: テストの読みやすさは、本番コードの読みやすさよりもさらに重要です。JUnit テスト ケース内で風変わりなフラグ、条件、およびロジックを使用しないでください。シンプルさが王様です。

例外をきれいにテストする方法のヒントについては、こちらの回答も参照してください。

于 2011-09-01T20:14:16.170 に答える
1

有効な入力用と無効な入力用の 2 つの異なるテストを用意します。私はJUnit 4を使用していないので、正確な注釈形式についてコメントすることはできませんが、基本的には、さまざまな異なる無効な入力を持つ1つのパラメータ化されたテストがあり、それは例外を期待していると言ってます.例外について何も言わない有効な入力。テストで例外がスローされるべきであると言われていないときに例外がスローされると、テストは失敗します。

于 2011-09-01T20:13:22.840 に答える