1

一般的なテスト クラスを作成しようとしていますが、注釈のexpected属性を指定する一般的な方法が見つかりません。@Testこれが私のコードの縮小版です:

public class MyTest<T extends Throwable> {
    Class<T> clazz; // set in constructor

    @Test(expected=clazz)
    public void test() { 
    }
}

私が使用するために得ているコンパイラエラーclazzは次のとおりです。

注釈属性 Test.expected の値は、クラス リテラルでなければなりません

これを回避する方法はありますか?

4

3 に答える 3

3

それはjunitの問題ではありません。Java アノテーションで変数を使用することはできません。何を達成しようとしているのか正確にはわかりませんが、予想される例外はjunitルールを使用して設定することもできます。そしてそれらは継承することができます

于 2013-01-02T00:08:36.353 に答える
1

JUnit のExpectedException を使用できます。

public class MyTest<T extends Throwable> {

    @Rule
    public ExpectedException thrown = ExpectedException.none();

    Class<T> clazz; // set in constructor

    @Test
    public void test() {
        thrown.expect(clazz); 
    }
}
于 2013-01-02T13:36:30.690 に答える
0

これは、テストの観点から興味深い問題です。失敗すると予想される単体テストを作成しましたが、テストが実行されるまでどのように失敗するかわかりません。より良い単体テストを作成する必要があると思います。テストが失敗する場合は、どのように失敗すると予想されるかを明確に知っておく必要があります。実際、常にまったく同じように失敗することを確認する必要があります。

于 2013-01-02T06:07:21.297 に答える