我正试图用 TDD 弄湿我的脚。我正在尝试为使用 Mockito 以及 MockMvc 和 Junit 的控制器编写单元测试用例。
但是我遇到了运行时错误,因此我的测试失败了。起初,由于找不到javax.servlet.SessionCookieConfig
.
我通过下载javax.servlet
api 并将其配置到项目的构建路径中解决了这个问题,但后来我面临
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()
perform()
在 MockMvc 实例上使用时。
谁能告诉我如何处理这种依赖关系,因为我认为这是由于服务器 servlet-api 和 javax.servlet api 不兼容而发生的。
编辑:我正在发布我用于单元测试的代码,但我认为这不会有任何帮助,但以防万一:
@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;
}
}