MockMvc如何用注解注入创建Mockmvc

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

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

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

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

解决:
所需依赖:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-test</artifactId> 
    <version>${spring.version}</version> 
    <scope>test</scope> 
</dependency> 

被测试的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());//打印请求和响应信息
    }

测试成功为:
在这里插入图片描述
如果报了406说明上面注解获取的配置文件里没有mvc:annotation-driven/在获取的配置文件里加上该注解就可以解决问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值