0

我正在尝试使用 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 在期望设置中抱怨未处理的异常。我知道它稍后会被抛出,并且我没有在预期范围内检查它。

我在这里做错了什么还是有一种简单的补救措施来解决这种情况?谢谢。

4

1 回答 1

3

在这个问题上,我刚从同事那里得到了很大的帮助;解决方案是将“抛出异常”添加到您的测试方法描述符中。这个解释对我来说仍然不是很清楚,但它类似于“Java 不知道你实际上并没有调用该方法”在 Expectations {} 块中。在我看来,Java 应该知道——但它不知道。

我希望这会有所帮助——我也确信 Eclipse 是错误的。

于 2012-05-24T17:21:01.017 回答