SpringBoot Test 🌱

YaR LabΒ·2024λ…„ 1μ›” 24일

SpringBoot 🌱

λͺ©λ‘ 보기
5/11
post-thumbnail

1️⃣ @RunWith

  • ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•  λ•Œ JUnit에 λ‚΄μž₯된 μ‹€ν–‰μž 외에 λ‹€λ₯Έ μ‹€ν–‰μžλ₯Ό μ‹€ν–‰μ‹œν‚΄
  • μŠ€ν”„λ§ λΆ€νŠΈ ν…ŒμŠ€νŠΈμ™€ JUnit 사이에 μ—°κ²°μž 역할을 함
  • λ°‘μ˜ μ˜ˆμ œλŠ” SpringRunnerλΌλŠ” μŠ€ν”„λ§ μ‹€ν–‰μžλ₯Ό μ‚¬μš©ν•¨
@RunWith(SpringRunner.class)

2️⃣ @WebMvcTest

  • Web(Spring MVC) 에 집쀑할 수 μžˆλŠ” μ–΄λ…Έν…Œμ΄μ…˜
  • μ„ μ–Έν•  경우, @Controller, @ControllerAdvice 등을 μ‚¬μš©ν•  수 있음
  • 단, @Service, @Component, @Repository 등은 μ‚¬μš©ν•  수 μ—†μŒ

3️⃣ @Autowired

  • μŠ€ν”„λ§μ΄ κ΄€λ¦¬ν•˜λŠ” 빈(Bean)을 μ£Όμž… λ°›μŒ

4️⃣ MockMvc

  • μ›Ή APIλ₯Ό ν…ŒμŠ€νŠΈν•  λ•Œ μ‚¬μš©ν•¨
  • μŠ€ν”„λ§ MVC ν…ŒμŠ€νŠΈμ˜ μ‹œμž‘μ 
  • 이 클래슀λ₯Ό 톡해 HTTP GET, POST 등에 λŒ€ν•œ API ν…ŒμŠ€νŠΈλ₯Ό ν•  수 있음

5️⃣ perform

  • MockMvc 객체λ₯Ό 톡해 μ—¬λŸ¬κ°€μ§€ HTTP λ©”μ„œλ“œλ₯Ό μš”μ²­

andExpect

  • 체이닝을 톡해 perform의 κ²°κ³Όλ₯Ό 검증
  • status(): HTTP Header의 Statusλ₯Ό 검증, 200 404 500 λ“±μ˜ μƒνƒœ 검증
  • content(): 응닡 본문의 λ‚΄μš© 검증
mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
  • jsonPath(): JSON 응닡값을 ν•„λ“œλ³„λ‘œ 검증할 수 μžˆλŠ” λ©”μ†Œλ“œ, $λ₯Ό κΈ°μ€€μœΌλ‘œ ν•„λ“œλͺ…을 λͺ…μ‹œ
mvc.perform(get("/hello/dto")
                        .param("name", name)
                        .param("amount", String.valueOf(amount)))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.name", is(name)))
            .andExpect(jsonPath("$.amount", is(amount)));

6️⃣ param

  • API ν…ŒμŠ€νŠΈν•  λ•Œ μ‚¬μš©λ  μš”μ²­ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •
  • 값은 String 만 ν—ˆμš©λ¨
  • 숫자/λ‚ μ§œ λ“±μ˜ ν…Œμ΄ν„°λ„ λ¬Έμžμ—΄λ‘œ λ³€κ²½ν•΄μ•Όλ§Œ μ‚¬μš© κ°€λŠ₯

7️⃣ save

  • ν…Œμ΄λΈ”μ˜ insert/update 쿼리λ₯Ό 싀행함
postsRepository.save(Posts.builder()
                .title(title)
                .content(content)
                .author(author)
                .build());

8️⃣ findAll

  • ν…Œμ΄λΈ”μ˜ λͺ¨λ“  데이터λ₯Ό μ‘°νšŒν•˜λŠ” λ©”μ„œλ“œ
List<Posts> postsList = postsRepository.findAll();

9️⃣ delete

  • μ—”ν‹°ν‹°λ₯Ό νŒŒλΌλ―Έν„°λ‘œ μ‚­μ œν•˜λŠ” λ©”μ„œλ“œ
  • deleteById λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ id둜 λ°”λ‘œ μ‚­μ œ κ°€λŠ₯
postsRepository.delete(posts);

μΆœμ²˜πŸ“š

πŸ“— μŠ€ν”„λ§ λΆ€νŠΈμ™€ AWS둜 혼자 κ΅¬ν˜„ν•˜λŠ” μ›Ή μ„œλΉ„μŠ€

0개의 λŒ“κΈ€