【问题标题】:How do I access DispatcherServlet with MockMvc?如何使用 MockMvc 访问 DispatcherServlet?
【发布时间】:2019-10-14 02:32:33
【问题描述】:

我有一个运行(和映射)正常的基本 SpringMVC 应用程序。 现在我想用 MockMvc 设置我的 UnitTests 来执行获取请求和东西。 但是,如果我运行测试,则会出现 AssertionError “预期状态: 但原为:”,并且我的控制台会发出警告“在 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”文件夹中,没有定义额外的配置。

我感觉问题出在我的项目结构上,但这是一个基本的 Eclipse“动态 Web 应用程序”,测试位于“src/test/java”,与“src/main/java”平行.

感谢您的帮助,因为我花了最后 2 个小时阅读解决方案,但没有得到诀窍。

【问题讨论】:

    标签: junit4 spring-test


    【解决方案1】:

    又过了一段时间,我现在得到了一些东西: 我仍然无法访问 WEB-INF 文件夹中的 dispatcher-servlet.xml。我在我的测试包中添加了一个新的“配置”包,与我的“控制器”测试包并行,并将 dispatcher-servlet.xml 的副本放在那里,称为“test-dispatcher-servlet.xml”。

    现在我的测试类可以使用

    @ContextConfiguration("../config/test-dispatcher-servlet.xml")
    public class HomeControllerTest {
    

    希望这可以帮助其他开始使用 spring mvc 测试的人:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2013-10-26
      相关资源
      最近更新 更多