2017-11-30 32 views
0

私の知識は、例外のテストは、「空」、「ヌル」にJUnitテストを実行し、例外テスト - JUnitの4

public Profile(List<Grade> g) { 
    throw new IllegalArgumentException(); 
} 
を「失敗」には、このコードのために良いものを知りたいために、私は、JUnitのを学ぶ学生です
+0

このapiを見てください:http://joel-costigliola.github.io/assertj/ –

答えて

1

あなたはJUnitの4で例外をスローするメソッドをテストするための明確な、最も柔軟な方法はExpectedExceptionルールを使用することである

@Test(expected = IllegalArgumentException.class) 
public void profileTest() { 
    //your logic 
} 
+0

あなたは私を助けることができる "リスト"のための任意のリソースですか?私はarraylistのためのリソースを持っています(例えば、新しいArraylist ().get(0);空リストの場合) – ZoroLost

+0

あなたがしたいことは分かりません。あなたの目標を説明してください。 –

+0

そうJunitテストでは、@Test(expected = illegalArugmentException.class)public void EmptyTest(){そのプロファイルメソッドを使用して空またはnullをコールするか失敗するArugment} – ZoroLost

0

ような例外のテスト何かのために使用することができます。あなたのテストクラスの最上部には:

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

これは、各テストの前にthrownを設定します例外を期待していないために、例外がスローされたかどうかを確認するために、各テストの後にそれを呼び出します。個々のテストで

:例外が期待に一致するスローされたとき

@Test 
public void applyDiscount_throws_exception_when_customer_is_non_member() { 

    Order order = new Order(newNonMemberCustomer()); 

    thrown.expect(DiscountEligibilityException.class); 
    thrown.expectMessage("Cannot apply discount to non-member"); 

    order.applyDiscount(DISCOUNT_CODE); 

} 

これは通過します。例外がスローされない場合、またはスローされた例外が期待通りでない場合は、その理由の有用な説明とともに失敗します。


ExpectedExceptionに、簡単だった@Test(expected = ExceptionType.class)フォームは、視覚的に欠場することがあった、とあなたが行うことができますどのくらいの検証に制限されています。


あり日曜大工方法もある:

@Test 
public void applyDiscount_throws_exception_when_customer_is_non_member() { 
     Order order = new Order(newNonMemberCustomer()); 
     try { 
      order.applyDiscount(DISCOUNT_CODE); 
      fail("Expected an exception"); 
     } catch(DiscountEligibilityException e) { 
      assertThat(e.getMessage(), is("Cannot apply discount to non-member"); 
     } 
} 

は...しかしExpectedExceptionは簡単に、より明確に、より標準的な、そして強力です。