Spring Boot Controller 유닛 테스트 작성

5860 단어 BackendSpringBoot
유닛 테스트 는 개발 자가 목표 코드 를 대상 으로 작 성 된 작은 코드 입 니 다. 목적 은 우리 의 목표 코드 가 기대 하 는 행동 과 일치 하 는 지 확인 하기 위해 서 입 니 다.다음은 Spring Boot 작은 프로젝트 의 Controller 에 대한 유닛 테스트 를 간단하게 작성 합 니 다.
//Controller
@RestController
public class UserController {
    @Resource
    private UserRepository userRepository;

    @PostMapping("/users")
    public String save(User user){
        userRepository.save(user);
        return "SUCCESS";
    }

    @DeleteMapping("/users/{id}")
    public String delete(@PathVariable(name = "id") Integer id){
        userRepository.deleteById(id);
        return "SUCCESS";
    }

    @GetMapping("/users/{id}")
    public User findOne(@PathVariable(name = "id") Integer id){
        return userRepository.findById(id).get();
    }

    @PutMapping("/users")
    public User update(User user){
        userRepository.save(user);
        return userRepository.getOne(user.getId());
    }
}

컨트롤 러 층 테스트 용례:
@RunWith(SpringRunner.class)
@SpringBootTest
//@ActiveProfiles("dev")        
@AutoConfigureMockMvc
public class UserControllerTest {
    @Autowired
    private MockMvc mvc;

    @Test
    @Transactional//              
    //@Rollback(false)
    public void testInsert() throws Exception {
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.post("/users");
        request.param("name","laiminghai");
        mvc.perform(request).
                andExpect(MockMvcResultMatchers.status().isOk()).
                andExpect(MockMvcResultMatchers.content().string("SUCCESS"));
    }

    @Test
    @Transactional
    //@Rollback(false)   
    public void testDelete() throws Exception{
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.delete("/users/18");
        mvc.perform(request).andExpect(MockMvcResultMatchers.status().isOk()).
                andExpect(MockMvcResultMatchers.content().string("SUCCESS"));
    }

    @Test
    public void testFindOne() throws Exception{
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/users/2");
        mvc.perform(request).andExpect(MockMvcResultMatchers.status().isOk()).
                andExpect(MockMvcResultMatchers.content().
                        string("{\"id\":2,\"name\":\"xiaoming2\"}"));
    }

    @Test
    public void testUpdate() throws Exception{
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.put("/users");
        request.param("id","2");
        request.param("name","xiaoming222");
        mvc.perform(request).andExpect(MockMvcResultMatchers.status().isOk()).
                andExpect(MockMvcResultMatchers.content().
                        string("{\"id\":2,\"name\":\"xiaoming222\"}"));
    }
}

마지막 으로 인터페이스 에 대한 테스트 는 크롬 브 라 우 저의 Postman 을 추천 합 니 다. 관심 있 는 것 은 알 아 보 세 요.

좋은 웹페이지 즐겨찾기