2017-08-02 4 views
-1

自分のassertSomething(...)メソッドを作成したとします。どのようにして単体テストを書いて、それがそれを使ってテストケースに正しく失敗していることを検証できますか?カスタムJUnitアサーションのテストを書くには?

+0

役立つ情報:あなたはちょうどあなたが何か他のものと同じようにそれのためのユニットテストを書くことができないと言ってhttps://www.guru99.com/junit-assert.html – roottraveller

+0

何もありません。 :-) – cjstehno

+0

残念ながら、このページは私の特定の質問には役に立ちません。私は自分自身のJUnitアサーションを作成しており、そのコードを単体テストしたいと思います。私のアサーションで許可されている場合、テストケースが合格する - アサーションで許可されていないテストケースが失敗します。 –

答えて

0

Junit 4.7で導入されたルールを見てください。特にTestWatcher。

TestWatcherは、テストアクションを変更せずに書き留めるルールの基本クラスです。たとえば、このクラスは、各通過のログを保存し、テストを失敗します:

public static class WatchmanTest { 
    private static String watchedLog; 

    @Rule 
    public TestWatcher watchman= new TestWatcher() { 
    @Override 
    protected void failed(Throwable e, Description description) { 
     watchedLog+= description + "\n"; 
    } 

    @Override 
    protected void succeeded(Description description) { 
     watchedLog+= description + " " + "success!\n"; 
    } 
    }; 

    @Test 
    public void fails() { 
    fail(); 
    } 

    @Test 
    public void succeeds() { 
    } 
} 
2

私が正しくあなたを理解していれば、私は次の方法を参照してください。あなたにも、例外を検証する必要がある場合は

@Test 
public void assertSomethingSuccessTest() { 
    // given 
    final Object givenActualResult = new Object(); // put your objects here 
    final Object givenExpectedResult = new Object(); // put your objects here 

    // when 
    assertSomething(givenActualResult, givenExpectedResult); 

    // then 
    // no exception is expected here 
} 

// TODO: specify exactly your exception here if any 
@Test(expected = RuntimeException.class) 
public void assertSomethingFailedTest() { 
    // given 
    final Object givenActualResult = new Object(); // put your objects here 
    final Object givenExpectedResult = new Object(); // put your objects here 

    // when 
    assertSomething(givenActualResult, givenExpectedResult); 

    // then 
    // an exception is expected here, see annotated expected exception. 
} 

を:

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

@Test 
public void assertSomethingFailedTest() { 
    // given 
    final Object givenActualResult = new Object(); // put your objects here 
    final Object givenExpectedResult = new Object(); // put your objects here 

    // and 
    thrown.expect(RuntimeException.class); 
    thrown.expectMessage("happened?"); 

    // when 
    assertSomething(givenActualResult, givenExpectedResult); 

    // then 
    // an exception is expected here, see configured ExpectedException rule. 
} 
関連する問題