2016-12-14 16 views
-1
@Test 
public void test() { 
    new NonStrictExpectations() { 
      { 
        aService.method1(anyString); result=abc 
      } 
     }; 
} 

Я использую Параметрированный бегун с jmockit. Теперь метод1 службы aervice может или не может быть вызван в зависимости от тестовых данных. , но jmockit бросает MissingInvocation Exception.Как издеваться над 0 или 1 вызовом с jmockit

+0

Во-первых, вы должны знать, что 'NonStrictExpectations' был удален из последних версий JMockit. Вы должны уточнить, какую версию вы используете. Во-вторых, вы должны предоставить трассировку стека «MissingInvocationException» - возможно, она не говорит, что вы думаете о ней. В-третьих, вы всегда должны стремиться предоставить пример, который мы можем реально воспроизвести, и увидеть проблему в действии. Нет ничего неправильного * per se * с вышеупомянутым фрагментом, но это не совсем то, что я могу отлаживать ... – dcsohl

+0

Возможно, вам понадобится использовать maxTimes = 1. Взгляните на http://jmockit.org/tutorial/Mocking.html#constraints – Alfergon

+0

@dcsohl Я использую jmockit 1.8. Не имеет значения, использую ли я строгие или не строгие ожидания в моем сценарии. Если я издеваюсь над методом в блоке Ожидания или NonStrictExpectations, jmockit ожидает как минимум 1 вызов этого метода. Если метод mocked не вызывается, тогда он выдает MissingInvocationException. Я работал над этой проблемой, используя новый MockUp. –

ответ

-1

В этом случае, согласно моему новому пониманию, я не должен использовать блок ожидания, а должен использовать фальсификацию и использовать поддельный экземпляр в тесте.

Service aService = new MockUp<Service>() { 
      @Mock 
      String method(String str){ 
       return "abc"; 
      } 
     }.getMockInstance(); 

Теперь aService можно использовать в тесте.