美文网首页
springboot中完成单元测试 29

springboot中完成单元测试 29

作者: 张力的程序园 | 来源:发表于2020-11-21 13:47 被阅读0次

本节演示一下在springboot中完成单元测试。

1、环境约束

  • win10 64位操作系统
  • idea2018.1.5
  • maven-3.0.5
  • jdk-8u162-windows-x64

2、前提约束

  • 创建一个springboot项目,假设项目名称为bootunittest,主启动类DemoApplication.java
    https://www.jianshu.com/p/de979f53ad80
  • 在bootunittest/src/main/java中创建一个类UserController.java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
public class UserController {


    @Resource
    UserService userService;

    @GetMapping("/user")
    public String get(@RequestBody User user)
    {
        return userService.get(user);
    }

    @PostMapping("/user")
    public String post(@RequestBody User user)
    {
        return userService.post(user);
    }
}
  • 在bootunittest/src/main/java中创建一个类UserService.java
import org.springframework.stereotype.Service;

@Service
public class UserService {
    public String get(User user) {
        return "get";
    }

    public String post(User user) {
        return "post";
    }
}
  • 在bootunittest/src/main/java中创建一个类User.java
import java.io.Serializable;

public class User implements Serializable {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public User() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

3、操作步骤

  • 在bootunittest/src/test/java中创建一个测试类UnitTest.java
import com.alibaba.fastjson.JSONObject;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import javax.annotation.Resource;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
@AutoConfigureMockMvc
public class DemoApplicationTests {

    @Resource
    private MockMvc mockMvc;

    @Resource
    UserService userService;

    @Test
    //测试service层,controller、mapper层一样
    public void testService() {

        String ret = userService.get(new User(1,"ali"));
        System.out.println(ret);
        Assert.assertEquals("get",ret);
    }

    @Test
    //测试post api
    public void postTest() throws Exception {

        User user = new User(1,"ali");

        MvcResult mvcResult = mockMvc.perform( MockMvcRequestBuilders.post("/user").characterEncoding("UTF-8")
                .contentType(MediaType.APPLICATION_JSON)
                .content(JSONObject.toJSONString(user).getBytes())).andReturn();
        int status = mvcResult.getResponse().getStatus();
        System.out.println(status);
    }

    @Test
    //测试get api
    public void getTest() throws Exception {

        User user = new User(1,"ali");

        MvcResult mvcResult = mockMvc.perform( MockMvcRequestBuilders.get("/user").characterEncoding("UTF-8")
                .contentType(MediaType.APPLICATION_JSON)
                .content(JSONObject.toJSONString(user).getBytes())).andReturn();
        int status = mvcResult.getResponse().getStatus();
        System.out.println(status);
    }

}

以上就是在springboot中完成单元测试的过程。

相关文章

网友评论

      本文标题:springboot中完成单元测试 29

      本文链接:https://www.haomeiwen.com/subject/zsasiktx.html