2016-03-30 5 views
0

Я использую JMockit для функционального тестирования, что в одном методе испытаний я использую, если-нибудь условие, как показано нижеПолучение ошибки во время использования, если-нибудь условия в методе JMockit @Test

@Ignore 
@Test(expected = CoreServiceException.class) 
public final void setExpectationsForOrchestration(@Mocked final int type, 
     @Mocked final Object request, 
     @Mocked final String responseFile) throws Exception{ 


     new NonStrictExpectations() { 

     { 
      XStream xstream = new XStream(); 
      File obligationResponseList = new File(mockDataDir 
       + responseFile); 
      FileReader xmlReader = new FileReader(
       obligationResponseList); 
      if (type == 1) { 
      orchestrationInstance 
       .retrieveServiceObligationResponseByServiceObligationRequest(
        (ServiceObligationRequest) request, 
        (AppContext) any); 
      } else if (type ==2) { 
      orchestrationInstance 
       .retrieveServiceObligationEntitlementResponseByServiceObligationEntitlementRequest(
        (ServiceObligationEntitlementRequest) request, 
        (AppContext) any); 
      } else if (type == 3) { 
      orchestrationInstance 
       .retrieveServiceObligationHeaderOfferResponseByServiceObligationProductRequest(
        (ServiceObligationProductRequest) request, 
        (AppContext) any); 
      } 
      else if (type == 4) { 
      orchestrationInstance 
       .retrieveServiceObligationCustomerDocumentByServiceObligationRequest(
        (ServiceObligationRequest) request, 
        (AppContext) any); 
      } 

      result = xstream.fromXML(xmlReader); 
     } 
     }; 


    } 
But while running i am getting this error 

java.lang .IllegalArgumentException: Invalid условный оператор внутри ожидания блок на com.hp.it.sbs.obligation.service.ObligationServiceImplMockTest_old $ 1 (ObligationServiceImplMockTest_old.java:2560) на com.hp.it.sbs.obligation.service.ObligationServiceImplMockTest_old. .setExpectationsForOrchestration (ObligationServiceImpl MockTest_old.java:2547) на com.hp.it.sbs.obligation.service.ObligationServiceImplMockTest_old.testRetrieveServiceObligationResponsesByServiceObligationRequests (ObligationServiceImplMockTest_old.java:169) в sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) при java.lang. (Method.java:597) на org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run (JUnit4TestReference.java:50) на org.eclipse.jdt.internal.junit.runner .TestExecution.run (TestExecution.java:38) на org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:459) на org.eclipse.jdt.internal.junit.runner .RemoteTestRu nner.runTests (RemoteTestRunner.java:675) на org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java:382) на org.eclipse.jdt.internal.junit.runner. RemoteTestRunner.main (RemoteTestRunner.java:192)

Может ли кто-нибудь ответить на это. Я использую версию jmockit 1.21

ответ

0

Это как раз сообщение об ошибке: «Недопустимый условный оператор внутри блока ожидания». То есть блок ожидания не допускается (по дизайну) иметь операторы if (или любой другой оператор, содержащий логическое условие).

Вместо этого тест должен содержать только ожидания, которые ему нужны для одного конкретного тестируемого сценария.