我有一个基本的SpringMVC应用程序,可以正常运行(和映射)。 现在,我想用MockMvc设置我的UnitTest来执行获取请求和东西。 但是,如果我运行测试,则会出现AssertionError“预期状态:<200>,但实际上是:<404>”,并且我的控制台发出警告“在名称为“''的DispatcherServlet中找不到URI [/]的HTTP请求的映射。 我感到我的MockMvc无法与DispatcherServlet通信,那么如何定义此连接?
这是我的短期考试:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration
public class HomeControllerTest {
private MockMvc mvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setup() throws ServletException {
mvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
public void testLandingPagePath() throws Exception {
mvc.perform(get("/")).andExpect(status().isOk());
}
}
因此,我希望MockMvc在默认情况下能够获取DispatcherServlet的位置。但这实际上并没有将其称为映射。
我的“ web.xml”和“ dispatcher-servlet.xml”位于“ WEB-INF”文件夹中,没有定义任何额外的配置。
我感觉到问题出在我的项目结构上,但这是一个基本的日食“动态Web应用程序”,测试位于“ src / test / java”中,与“ src / main / java”平行
我非常感谢您的帮助,因为我花了最后2个小时来阅读解决方案,但没有找到窍门。
答案 0 :(得分:0)
再过一段时间后,我现在明白了: 我仍然无法访问WEB-INF文件夹中的dispatcher-servlet.xml。我在测试包中与“控制器”测试包并行添加了一个新的“ config”包,并在其中放置了一个dispatcher-servlet.xml副本,称为“ test-dispatcher-servlet.xml”。
现在我的测试班级可以通过
进行访问@ContextConfiguration("../config/test-dispatcher-servlet.xml")
public class HomeControllerTest {
希望这可以帮助其他从Spring MVC测试开始的人:-)