如果在創建支持bean之前沒有在上下文中提供值,Seam組件將會失敗。我已經能夠手動測試這個,但想用單元測試來涵蓋這個場景。使用異常篩選器和expectedExceptions註釋進行Seam單元測試
當Seam試圖創建輔助bean時,我基本上得到了org.jboss.seam.InstantiationException
,這是由java.lang.IllegalArgumentException
造成的。這很好,而且是我期望會發生的事情。問題在於,當我編寫單元測試時,我無法圍繞new FacesRequest(..) {}.run();
進行嘗試/捕獲,或者使用expectedExceptions註釋。在這兩種情況下,該異常都未被捕獲並導致測試失敗。我想這是因爲Seam的異常過濾器,但我不知道有足夠的瞭解過濾器知道正確的方式來測試這個..
我與註釋代碼看起來是這樣的:
// also tried IlligalArgumentException here
@Test(enabled = true, expectedExceptions = InstantiationException.class)
public void noDataTest() throws Exception
{
login(USERNAME);
// the stack trace says that the test fails on the next line.
// this is expected.
new FacesRequest("/blah/blah/show.xhtml") {
@Override
protected void updateModelValues() {
}
@Override
protected void invokeApplication()
{
// we should never get here
// i'll put an failure here eventually
}
}.run();
}
@Chris Williams不錯,但您能提供更多詳細信息:您的組件,其範圍,每種測試方法包含的內容 – 2010-02-18 04:41:47
@Arthud Ronald FD Garcia,當我找出問題時,我正準備提供更多信息。請參閱下面的答案。 – 2010-02-18 17:25:22