2011-07-06 76 views
0

如果junit測試的結果爲「失敗」,究竟意味着什麼? 我假設在測試過程中發生異常,但我找不到任何有關它的信息。 也是在追蹤破壞線路:Junit測試:什麼是失敗?

Assert.assertTrue(result); 

,其中結果僅僅是一個布爾值。所以我不知道如何在這一行中發生異常。

+0

你可以指定消息assertTrue(「結果應該是真的,因爲...」,結果) – 01es

回答

3

Assert.assertTrue(result);

如果結果爲false,則此斷言將失敗,並且您將收到AssertionError。測試的作者想要確保結果是真實的,如果它是錯誤的,那麼就有錯誤,你應該檢查上面的測試代碼。

+0

實際上,雖然這被稱爲'錯誤'而不是'失敗' – clamp

0

當一個JUnit測試是「失敗」,你已經得到一個AssertionException。你的情況結果是假的,它應該是真的。

0

失敗通常意味着斷言失敗。例外情況將分開追蹤(根據錯誤,iirc)。

0

documentation -

一個失敗保存失敗的測試的描述,當運行它拋出的異常。在大多數情況下,描述將是單一測試。但是,如果在構造測試時遇到問題(例如,如果BeforeClass方法不是靜態的),它可能會描述除單個測試之外的其他內容。

通常,failure意味着您對測試結果的斷言失敗。

0

這只是說,你的布爾變量結果的值是false。

Assert.assertTrue(result); 

表示您想檢查「結果」是否爲真。請注意方法名稱assertTrue。當且僅當result = true時,測試用例才能通過。否則,該案件被認爲是失敗的。

當你沒有得到你所期望的,這是一種失敗。它不必是一個例外。如果你期望代碼例程返回X,那麼你得到的是Y,那麼它就是一個失敗的測試用例。

0

這並不意味着發生了異常,只是代碼返回的值比您聲明的測試值還高。與
Assert.asserFalse(result);
替換你的代碼,看看本次測試沒有失敗

2

你的問題似乎是一個「Failiure」和「錯誤」之間的區別,因爲兩者最終對應一個異常被拋出。

「失敗」是測試中的一個地方,您所期望的事情不會發生。 在測試,如:

TestedObject testedObject = new TestedObject(); // This is the object we test 
    boolean something = testedObject.computeSomething(); // The tested method 
    Assert.assertTrue("Something should be true", something); 
    // following of the test 

如果你的計算(在「東西」變量)的結果,是不正確的,這意味着computeSomething方法的工作,但並不如預期;這是一個「失敗」。原因可能是該方法中的一個邏輯錯誤。如果computeSomething()方法拋出一個意想不到的異常(計算中的NPE或其他),那麼這也意味着該方法被破壞,但可能以更「殘酷」的方式(缺少依賴關係,未處理的角落案件等)。該方法需要進行一些異常處理。這在JUnit說法中被稱爲'錯誤'。

現在,在這兩種情況下,這意味着該方法被破壞,並且會引發異常(通過您的代碼或Assert.assertXXX方法)並由TestRunner捕獲。在這兩種情況下簡單地說「測試失敗」並不罕見;因爲重要的是TestedObject需要完成一些工作來獲得綠條。

當然,有時候,你想測試你的代碼實際上拋出一個異常,那麼你會寫是這樣的:

TestedObject testedObject = new TestedObject(); // This is the object we test 
    try { 
    // The tested method, that is expected to throw an Exeption when given null 
    boolean something = testedObject.computeSomething(null); 
    Assert.fail("The computation should have failed"); 
    } catch (IllegalArgumentException e) { 
    // Pass - This is the expected behavior 
    } 

在這種情況下拋出一個異常,應引起既不錯誤,也不是失敗;相反,當例外是而不是則拋出測試失敗。