2012-05-24 3 views
0

Я пытаюсь писать несколько тестов с использованием 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 жалуется на необработанное исключение в настройке ожидания. Я знаю, что он будет выпущен позже, и я не буду проверять бизнес в ожидании.

Я делаю что-то ужасно неправильно здесь или есть простое средство для этой ситуации? Благодарю.

ответ

3

Я только что получил большую помощь от своих коллег по этой проблеме; решение заключалось в том, чтобы добавить «throws Exception» в ваш дескриптор метода тестирования. Объяснение все еще не кристально ясно для меня, но это что-то вроде «Java не знает, что вы на самом деле не вызываете метод» в блоке «Ожидания» {}. Мне кажется, Java должен знать, но это не так.

Я надеюсь, что это поможет - я также был убежден, что Eclipse просто ошибается.

+0

добавил броски сам, но это кажется немного странным ... – Bober02

Смежные вопросы