SpringMVC Controller单元测试静态引入通配符问题

在进行SpringMVC Controller的单元测试时,遇到无法直接使用get()和content()等方法的问题。通过查看源码发现需要静态导入MockMvcRequestBuilders., MockMvcResultMatchers., MockMvcBuilders.*。然而使用通配符(*)时,无法成功导入。解决方法是在Eclipse中将这些类设为“favorite static members”,在Java → Editor → Content Assist → Favorites中配置,或者在其他IDE中检查静态成员代码补全的支持,完成静态导入设置。" 123649463,13009178,UI自动化测试实践:环境搭建与配置指南,"['Python', '自动化', 'web', 'UI', 'Selenium']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;

import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@WebAppConfiguration
public class Test {

    @Autowired
    private WebApplicationContext wac;

    private MockMvc mockMvc;

    @Before
    public void setup() {
        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }

    @org.junit.Test
    public void test() {

        try {

            ResultActions ra = mockMvc
                    .perform(
                            post("/printBill/print")
                                    .accept(MediaType
                                            .parseMediaType("application/json;charset=UTF-8"))
                                    .param("printUrl", "aa"))
                    .andExpect(status().isOk())
                    .andExpect(
                            content().contentType(
                                    "application/json;charset=UTF-8"));
            MvcResult result = ra.andReturn();
            String response = result.getResponse().getContentAsString();
            System.out.println(response);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

在进行SpringMVC Controller单元测试的时候,一开始按正常引入,是无法获取get(),content()等方法。查阅源码:
部分源码

 <pre class="code">
 * import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 * import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 * import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
 *
 * // ...
 *
 * WebApplicationContext wac = ...;
 *
 * MockMvc mockMvc = webAppContextSetup(wac).build();
 *
 * mockMvc.perform(get("/form"))
 *     .andExpect(status().isOk())
 *     .andExpect(content().mimeType("text/html"))
 *     .andExpect(forwardedUrl("/WEB-INF/layouts/main.jsp"));
 * </pre>

需要静态引入MockMvcRequestBuilders.,MockMvcResultMatchers.,MockMvcBuilders.*
于是乎马上进行静态引入。发现使用通配符,就无法引入。查阅官方文档

Static Import The fluent API in the example above requires a few static imports such as MockMvcRequestBuilders., MockMvcResultMatchers., and MockMvcBuilders.. An easy way to find these classes is to search for types matching “MockMvc“. If using Eclipse, be sure to add them as “favorite static members” in the Eclipse preferences under Java → Editor → Content Assist → Favorites. That will allow use of content assist after typing the first character of the static method name. Other IDEs (e.g. IntelliJ) may not require any additional configuration. Just check the support for code completion on static members.

嗯,蹩脚的英文看着有点晕眩。但是仔细认真的猜测一下。如果通配符引入不进去,需要设置一下Java → Editor → Content Assist → Favorites。嗯,找到提示的位置。然后点击new Type→ Browse弹出搜索框。然后输入MockMvcRequestBuilders。选中OK。如此,再加入其它两个包。大功告成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值