我正在尝试使用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在期望设置中抱怨未处理的异常。我知道它会在以后被抛出,我没有在期望中进行业务检查。
我在这里做了一些非常错误的事情,还是针对这种情况做了一个简单的补救措施?感谢。
答案 0 :(得分:3)
我刚从同事那里得到了很多帮助。解决方案是在测试方法描述符中添加“throws Exception”。对我来说,解释仍然不是很清楚,但它有点像'Java不知道你在Expectations {}块中实际上没有调用方法'。在我看来,Java应该知道 - 但事实并非如此。
我希望有所帮助 - 我也确信Eclipse是错的。