我正在尝试使用JMock编写一些测试,并将添加以下代码:

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抱怨在期望设置内未处理的异常。我知道它将在以后抛出,并且我没有进行任何商务检查。

我在这里做错了什么吗?还是有一种简单的补救方法?谢谢。

最佳答案

我刚刚从同事那里得到了很大的帮助。解决方案是在测试方法描述符中添加“ throw Exception”。对于我来说,这种解释仍然不是很清楚,但是在Expectations {}块中有些类似“ Java不知道您实际上没有调用该方法”的意思。在我看来,Java应该知道-但事实并非如此。

我希望能有所帮助-我也坚信Eclipse错了。

关于java - JMock奇怪的try/catch子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10741429/

10-10 02:01