2011-12-20 39 views
2

我已經得到了以下的測試,我已經把一個嘗試捕捉周圍:如何使用@rule硒的Junit如果實際值不等於預期值,因此無法測試失敗

try{ 
     Assert.assertEquals(ExpectedCount, ActualCount); 
    }catch (Throwable t){ 
     System.out.println ("Actual value is not equal to expected value"); 
    } 

每當我運行它通過的這個測試。但是,如果預期=實際沒有消息打印,這是正確的。如果他們不相等,那麼我打印的消息。所以測試邏輯是有效的。

但Juint測試仍然通過。

我一直在努力的包括以下幾種,但不能得到它的工作:

errCollector.addError(t); 

@Rule 

Public ErrorCollected errCollector = new ErrorCollector(); 

增加(在類測試的公共層面增加了這一點)

Under

System.out.println ("Actual value is not equal to expected value"); 

我收到錯誤「Rule cannot be resolved to a type」它沒有給我任何選項導入。

我一直在試圖找出如何使用@Rule方法使測試失敗,但無法弄清楚。

+0

你發現了junit拋出的異常,導致測試失敗。因此測試通過。 – oers 2011-12-20 16:00:22

+0

我將它們作爲套件的一部分運行,因此我需要知道它已失敗。 – 2011-12-20 16:02:28

+0

檢查你的junit版本@規則是在junit4.7中引入的 – oers 2011-12-20 16:05:42

回答

3

正如@oers所說,你無法找到規則的原因可能是因爲你的JUnit版本太舊了。嘗試更高版本,> 4.7。

您的問題最簡單的辦法就是重新拋出,你捕捉異常:

try { 
    Assert.assertEquals(ExpectedCount, ActualCount); 
} catch (Throwable t) { 
    System.out.println ("Actual value is not equal to expected value"); 
    throw t; 
} 

但你需要添加拋出的Throwable到您的測試方法。你有另外一種方法,爲你的斷言添加描述:

Assert.assertEquals("Actual value is not equal to expected value", ExpectedCount, ActualCount); 
+0

謝謝馬修。這現在起作用。乾杯! – 2011-12-20 20:34:30

相關問題