私のメソッドのJUnitテストを記述しました。
これは私の方法である:JUnitでのExceptingが動作しない
public static int delimit(int value, int min, int max) throws IllegalArgumentException {
if (min > max)
throw new IllegalArgumentException("Min value was greater than max value.");
return Math.min(max, Math.max(min, value));
}
これはテストです:
public class DMathTest extends TestCase {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testDelimit() {
...
exception.expect(IllegalArgumentException.class);
DMath.delimit(1, 3, 2);
}
}
IllegalArgumentException
は確かに投げたが、JUnitは、テスト中にエラーとしてマークしています。それは、(予想される)例外のためにテストが失敗したことを私に伝えます。 AssertionErrorも何もありません。あたかも期待通りのコードがなかったかのように、ただIllegalArgumentException
と表示されます。 その後、ルールとすべての期待値コードを削除しましたが、まったく同じ結果になりました(もちろん、これはどのようにするべきかです)。だからルールとコール
exception.expect(IllegalArgumentException.class);
何もしていない。
私はEclipseを使用しています.Mavenを使用してJUnitを組み込みました。依存関係要素は次のようになります。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
どうしましたか?なぜ例外が予想されないのですか?
はい、間違いでした。 'TestCase'を拡張しなければ、うまく動作します。どうもありがとうございました! – David