2016-04-29 103 views
0

例外にアサートするJUnitテストを書いてみたいと思います。私の場合、私の期待はDataAccessExceptionをキャッチしています。しかし、DataAccessExceptionは抽象クラスであり、私のコードはDataAccessExceptionから拡張された具象クラスをスローする可能性があります。EasyMock:階層内の任意のクラスをアサートする例外

これはJUnitのルール使用して、私のコードです:あなたが知っているように

@Rule 
public final ExpectedException exception = ExpectedException.none(); 

@Test 
public void testDelete_fail() { 
    EasyMock.expect(testSubject.delete(EasyMock.anyObject())) 
      .andThrow(new DataAccessException("...")); 

    exception.expect(DataAccessException.class); 
    testSubject.delete(id);   
} 

を、私は抽象クラスの新しいインスタンスを作成することはできません。つまり、私はandThrowメソッドの引数を埋めることはできません。

AssertionError: Expected test to throw an instance of org.springframework.dao.DataAccessException 

任意のアイデア?私はEasyMockを使用して何かを好むだろう:私は1つがDataAccessExceptionから延びはDuplicateKeyException、でビルドしようとすると、私はエラーを得ました。おかげ

Hierarchy of DataAccessException

答えて

0

簡単なトリックはcreateNiceMock(DataAccessException.class)だろう。しかし実際には、new DataAccessException("...") {}も機能します。

+0

こんにちは、私はEasyMock.createNiceMock(DataAccessException.class)を使ってみましたが、別のエラー(NoSuchMethodError:org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object; Lorg/hamcrest/Description;))がありました。私の問題が一時的に修正された方法は、新しいインスタンスDataIntegrityViolationExceptionを作成することでした。私の重要な問題は、EasyMock.replayを呼び出すのを忘れたことでした。ところで、あなたの答えをありがとう – jmgoyesc

関連する問題