2016-04-25 48 views
0

我寫了一個Junit測試來測試我的代碼。當我在我的代碼中遇到任何異常時,我希望我的Junit測試用例失敗。我嘗試使用assert語句,但即使在我的代碼中出現異常時,我的Junit測試用例也正在傳遞。請任何人都可以告訴我如何才能做到這一點?謝謝。如果代碼中有任何異常,如何使Junit測試用例失敗?

+0

我猜你使用'fail'? –

+4

請顯示您的代碼。如果JUnit拋出異常,應該會自動失敗。 –

回答

1

可以斷言,一個全局變量「例外」 =空或類似的東西並將其初始化爲等於catch塊中的一些信息字符串。

2

我強烈建議您只能測試功能。如果拋出異常,測試將自動失敗。如果沒有發生異常,您的測試將全部變爲綠色。

但是,如果你仍然想編寫測試代碼應該失敗在例外情況下,這樣做: -

@Test 
public void foo(){ 
    try{ 
     //execute code that you expect not to throw Exceptions. 
    } 
    catch(Exception e){ 
     fail("Should not have thrown any exception"); 
    } 
} 
1

以下兩個測試將失敗,但不會進一步編碼:

@Test 
public void fail1() { 
    throw new NullPointerException("Will fail"); 
} 

@Test 
public void fail2() throw IOException { 
    throw new IOException("Will fail"); 
} 
4

其實當代碼拋出一個異常測試應該失敗。當然,如果你捕捉到這個異常,並且不會進一步拋出它(或任何其他異常),測試不會知道它。在這種情況下,您需要檢查方法執行的結果。 試驗例:

@Test 
public void test(){ 
    testClass.test(); 
} 

方法,將未通過測試:

public void test(){ 
    throw new RuntimeException(); 
} 

方法是不會失敗的測試

public void test(){ 
    try{ 
    throw new RuntimeException(); 
    } catch(Exception e){ 
    //log 
    } 
}