MockMvc如何用注解注入创建Mockmvc

前言
今天看到了不用注解注入如何用mockmvc测试,回来之后研究了一下用注解注入的方式发现注解注入更方便,不需要区别各种情况。

问题:
那如何用注解来创建一个mockmvc呢是不是会更方便呢?

分析:
既然用注解获取到mockmvc那么肯定不需要通过以下形式创建一个Controller对象来创建mock那应该如何创建呢?

private LoginController loginController;
loginController=applicationContext.getBean(LoginController.class);
mockMvc = MockMvcBuilders.standaloneSetup(loginController).build();

解决:
所需依赖:

 
    org.springframework 
    spring-test 
    ${spring.version} 
    test 
 

被测试的controller:

    @Controller
    @SuppressWarnings("SpringJavaAutowiringInspection")
    @RequestMapping("front")
    public class LoginController {
        @Resource
        UserService userService;
         /**
         * 登录页面
         * @param username,password 账号和密码
         * @return 返回登录结果信息
         */
        @RequestMapping(value ="/login",method = RequestMethod.POST)
        @ResponseBody
        public JsonResult getLogin(@RequestParam String username,@RequestParam String password){
            UserExample userExample=new UserExample();
            JsonResult jsonResult=new JsonResult();
            int n=userService.selectByNameAndPassword(username,password,userExample);
            if(n>0){
                jsonResult.setSuccess(true);
            }else {
                jsonResult.setSuccess(false);
                jsonResult.setFailReason("登录失败");
            }
                return jsonResult;
        }

 测试类:

@RunWith(SpringJUnit4ClassRunner.class)// 表示使用Spring Test组件进行单元测试
@ContextConfiguration(locations = {"classpath:spring/applicationContext.xml"})//加载配置文件
@WebAppConfiguration// 使用这个Annotate会在跑单元测试的时候真实的启一个web服务,然后开始调用Controller的Rest API,待单元测试跑完之后再将web服务停掉;
public class ArticleControllerTest {
   @Resource
    protected WebApplicationContext wac;
    private MockMvc mockMvc;
    @Before
    public void setUp() throws Exception {
    mockMvc= MockMvcBuilders.webAppContextSetup(wac).build();
    }
    @After
    public void tearDown() throws Exception {}
    @Test
    public void insertArticle() throws Exception {
    mockMvc.perform(post("/front/login")//构造一个post请求
            .param("username","112233")//添加请求参数
             .param("password","123"))
            .andDo(print());//打印请求和响应信息
    }

测试成功为:
MockMvc如何用注解注入创建Mockmvc_第1张图片
如果报了406说明上面注解获取的配置文件里没有mvc:annotation-driven/在获取的配置文件里加上该注解就可以解决问题

你可能感兴趣的:(测试专栏)