Sto cercando di bagnarmi i piedi con TDD. Sto provando a scrivere casi di test unitari per controller usando Mockito in congiunzione con MockMvc e Junit.java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted() durante l'utilizzo di Mockito con Junit
Ma sto ottenendo un errore di runtime con conseguente fallimento del mio test. All'inizio ho riscontrato problemi nell'inizializzazione dell'istanza MockMvc nell'installazione a causa di un errore nel trovare javax.servlet.SessionCookieConfig
.
Questo l'ho risolto scaricando il javax.servlet
api e la configurazione è nel percorso di generazione del progetto, ma poi io sono di fronte al
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()
durante l'utilizzo perform()
sull'istanza MockMvc.
Qualcuno può dirmi cosa fare con questo tipo di dipendenze come penso che stia succedendo a causa del server incompatibile servlet-API e javax.servlet api.
EDIT: Vi metto il codice che sto usando utilizzando per il test unità, ma non credo che sarebbe stato alcun aiuto, ma solo nel caso in cui:
@RunWith(MockitoJUnitRunner.class)
public class MyControllerTest {
@InjectMocks
private MyController myController = new MyController();
@Mock
private MyService myService = new MyServiceImpl();
private MockMvc mockMvc;
@Before
public void setUp(){
this.mockMvc = MockMvcBuilders.standaloneSetup(myController).build();
}
@Test
public void testList() throws Exception{
A a = new A();
a = createMockClassA();
Mockito.when(myService.getServiceForA(Mockito.anyMapOf(String.class, String.class))).thenReturn(a);
MvcResult result = this.mockMvc.perform(get("/somePath/")).param("someExpectedParam","value").andReturn();
System.out.println(result.getResponse().getContentAsString());
}
private static A createMockClassA(){
A a = new A();
a.setId(i);
a.setTitle("mock-" + i);
return a;
}
}
Hi Jens, Ho verificato l'API isAsyncStarted è stato aggiunto nel servlet 3.0 e sto usando java.servlet-3.0.jar nel mio progetto build. – Sourabh
Questo è ok per lo sviluppo. Controllare se il server sta utilizzando lo stesso livello di API servlet. –
Il server ha lo stesso livello di API servlet. – Sourabh