Tôi đang cố gắng làm ướt chân bằng TDD. Tôi đang cố gắng viết các trường hợp kiểm thử đơn vị cho các bộ điều khiển sử dụng Mockito kết hợp với MockMvc và Junit.java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted() trong khi sử dụng Mockito với Junit
Nhưng tôi gặp lỗi thời gian chạy do đó không thực hiện được thử nghiệm của mình. Lúc đầu, tôi đã phải đối mặt với vấn đề trong việc khởi tạo các MockMvc dụ trong các thiết lập do thất bại trong việc tìm kiếm các javax.servlet.SessionCookieConfig
.
tôi này được giải quyết bằng cách tải về javax.servlet
api và cấu hình nó vào việc xây dựng con đường của dự án nhưng sau đó tôi đang phải đối mặt với
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()
khi sử dụng perform()
trên dụ MockMvc.
Bất cứ ai có thể cho tôi biết phải làm gì với loại phụ thuộc như tôi nghĩ rằng nó đang xảy ra do máy chủ không tương thích servlet-api và javax.servlet api.
EDIT: Tôi gửi bài mã Tôi đang sử dụng sử dụng cho kiểm tra đơn vị nhưng tôi không nghĩ rằng nó sẽ được bất kỳ sự giúp đỡ nhưng chỉ trong trường hợp:
@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, Tôi đã kiểm tra API isAsyncStarted đã được thêm vào trong servlet 3.0 và tôi đang sử dụng java.servlet-3.0.jar trong dự án xây dựng của mình. – Sourabh
Thats ok để phát triển. Kiểm tra xem máy chủ có sử dụng cùng cấp api servlet không. –
Máy chủ có cùng cấp api servlet. – Sourabh