0

JMockを使用していくつかのテストを作成しようとしていますが、次のコードが追加されます。

db = context.mock(DBResultQueryExecutor.class);
context.checking(new Expectations() {{
     oneOf (db).prepareQuery(query);
     will(throwException(new QueryException("Test")));
}});

これで、myDBResultQueryExecutorは次のように定義されます。

public interface DBResultQueryExecutor{
...
void executeQuery() throws QueryException; //This is a checked exception
... }

JMockでは、メソッドが将来のある時点で1回だけ呼び出されるように指定しようとしています。Eclipseが期待値の設定内で未処理の例外について不平を言っているという事実を除いて、これは問題ありません。私はそれが後で投げられることを知っています、そして私は期待の範囲内でそれをチェックするビジネスを持っていません。

私はここでひどく間違ったことをしていますか、それともこの状況に対する簡単な救済策はありますか?ありがとう。

4

1 に答える 1

3

この問題について、同僚から大きな助けを得ました。解決策は、テストメソッド記述子に「throwsException」を追加することでした。説明はまだはっきりしていませんが、Expectations{}ブロックの「Javaはあなたが実際にメソッドを呼び出していないことを認識していません」という線に沿ったものです。私には、Javaは知っているはずですが、そうではありません。

それがお役に立てば幸いです。Eclipseが間違っていることも確信していました。

于 2012-05-24T17:21:01.017 に答える