JMock奇怪的try / catch子句

时间:2012-05-24 16:20:30

标签: java unit-testing jmock

我正在尝试使用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在期望设置中抱怨未处理的异常。我知道它会在以后被抛出,我没有在期望中进行业务检查。

我在这里做了一些非常错误的事情,还是针对这种情况做了一个简单的补救措施?感谢。

1 个答案:

答案 0 :(得分:3)

我刚从同事那里得到了很多帮助。解决方案是在测试方法描述符中添加“throws Exception”。对我来说,解释仍然不是很清楚,但它有点像'Java不知道你在Expectations {}块中实际上没有调用方法'。在我看来,Java应该知道 - 但事实并非如此。

我希望有所帮助 - 我也确信Eclipse是错的。