2012-05-24 82 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