2012-05-24 16 views
0

我試圖寫上去使用JMock的幾個測試和下面的代碼將被添加:JMock的奇怪的try/catch子句

db = context.mock(DBResultQueryExecutor.class); 
context.checking(new Expectations() {{ 
    oneOf (db).prepareQuery(query); 
    will(throwException(new QueryException("Test"))); 
}}); 

現在,我的DBResultQueryExecutor定義如下:

public interface DBResultQueryExecutor{ 
... 
void executeQuery() throws QueryException; //This is a checked exception 
... } 

在JMock中,我只是試圖指定該方法將在將來的某個時刻調用一次。除了Eclipse正在抱怨期望設置中未處理的異常外,這很好。我知道它會在稍後被拋出,並且我沒有期望的業務檢查。

我在這裏做了一些非常錯誤的事情嗎?還是對這種情況有一個簡單的補救措施?謝謝。

回答

3

我剛剛得到了同事們對這個問題的很大幫助,解決方案是添加「拋出異常」到您的測試方法描述符。這個解釋對我來說還不是很清楚,但是它符合Expectations {}塊中'Java並不知道你實際上沒有調用'的方法。對我來說,Java應該知道 - 但事實並非如此。

我希望有幫助 - 我也確信Eclipse是錯的。

+0

加入投擲我自己,但它似乎有點奇怪... – Bober02