2021年10月20日 作者 zeroheart

控制层测试用例

1.定一个基类

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootBssPMApplication.class)
@AutoConfigureMockMvc
@Slf4j
public class BaseControllerTest {
    MockMvc mockMvc;

    @Before
    public void init() {
        log.info("开始测试...");
    }

    @After
    public void after() {
        log.info("测试结束...");
    }
}

2.filter处理中文字符

public class Utf8Filter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {
        response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
        filterChain.doFilter(request, response);
    }
}

3.具体测试类

3.1注入controller,初始化mockMvc

@Autowired
UserController userController;

@Before
public void setup(){
        mockMvc = MockMvcBuilders.standaloneSetup(userController)
                .addFilter(new Utf8Filter())
                .build();
    }

3.2写具体的测试方法

@Test
public void get() throws Exception {
        String url = "/baf/user/{id}";

        mockMvc.perform(MockMvcRequestBuilders.get(url, 1)
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
}

3.3完整测试类

public class UserControllerTest extends BaseControllerTest{
    @Autowired
    UserController userController;

    @Before
    public void setup(){
        mockMvc = MockMvcBuilders.standaloneSetup(userController)
                .addFilter(new Utf8Filter())
                .build();
    }

    @Test
    public void get() throws Exception {
        String url = "/baf/user/{id}";

        mockMvc.perform(MockMvcRequestBuilders.get(url, 1)
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }

    @Test
    public void list() throws Exception {

        mockMvc.perform(MockMvcRequestBuilders.post("/baf/user/list")
                .param("pageNum", "1")
                .param("pageSize", "20")
                .param("username", "")
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();

    }

    @Test
    @Transactional
    public void add() throws Exception {

        JSONObject userInfo = new JSONObject();
        userInfo.put("username", "王武");
        mockMvc.perform(MockMvcRequestBuilders.post("/baf/user/")
                .content(userInfo.toJSONString())
                .contentType(MediaType.APPLICATION_JSON_VALUE)
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();

    }