π[μ€νλ§λΆνΈμ AWSλ‘ νΌμ ꡬννλ μΉ μλΉμ€] Test ν΄λμ€μ μ¬μ©λλ μ λ Έν μ΄μ λ° μ½λ μ€λͺ
Test Class 1
package com.jojoldu.book.springboot.web;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.client.match.MockRestRequestMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
class HelloControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void return_hello() throws Exception {
String hello = "hello";
mvc.perform(get("hello")).andExpect(status().isOk()).andExpect(content().string(hello));
}
}
@RunWith(SpringRunner.class)
ν
μ€νΈλ₯Ό μ§νν λ Junit
μ λ΄μ₯λ μ€νμ μΈμ λ€λ₯Έ μ€νμλ₯Ό μ€νμν¨λ€.
μ¬κΈ°μλ SpringRunner
λΌλ μ€νλ§ μ€νμλ₯Ό μ¬μ©νλ€.
μ¦, μ€νλ§λΆνΈ ν
μ€νΈμ Junit μ¬μ΄μ μ°κ²°μ μν μ νλ κ²μ΄λ€.
@WebMvcTest
μ¬λ¬ μ€νλ§ μ λ
Έν
μ΄μ
μ€, Web
μ μ§μ€ν μ μλ μ λ
Έν
μ΄μ
μΌλ‘, μ μΈ μμλ @Controller
, @ControllerAdivce
λ±μ μ¬μ©ν μ μλ€.
λ¨, @Service
, @Component
, @Repository
μ κ°μ μ λ
Έν
μ΄μ
μ μ¬μ©ν μ μλ€.
μ μ½λμμλ 컨νΈλ‘€λ¬λ§ μ¬μ©νκΈ° λλ¬Έμ μ μΈνλ€.
@Autowired
μ€νλ§μ΄ κ΄λ¦¬νλ λΉ(bean)
μ μ£Όμ
λ°λλ€.
@private MockMvc mvc
μΉ APIλ₯Ό ν
μ€νΈν λ μ¬μ©νλ€.
μ€νλ§ MVC ν
μ€νΈμ μμμ μΌλ‘, μ΄ ν΄λμ€λ₯Ό ν΅ν΄ HTTP GET, POST
λ±μ λν API ν
μ€νΈλ₯Ό ν μ μλ€.
@mvc.perform(get(β/hello))
MockMvc
λ₯Ό ν΅ν΄ /hello
μ£Όμλ‘ GET
μμ²μ νλ€.
체μ΄λμ΄ μ§μλμ΄ μλμ κ°μ΄ μ¬λ¬ κ²μ¦ κΈ°λ₯μ μ΄μ΄μ μ μΈν μ μλ€.
.andExpect(status.isOk())
mvc.perform
μ κ²°κ³Όλ₯Ό κ²μ¦νλ€.
HTTP Header
μ Status(200, 404, 500 λ±)
λ₯Ό κ²μ¦νλ μν μ λ΄λΉνλ€.
μ μ½λμμλ isOk() -> 200(OK)μΈμ§ μλμ§λ₯Ό κ²μ¦νλ€.
.andExpect(content().string(hello))
mvc.perform
μ κ²°κ³Όλ₯Ό κ²μ¦νλ€.
μλ΅ λ³Έλ¬Έμ λ΄μ©μ κ²μ¦νλ μν λ‘, Controllerdptj βhelloβλ₯Ό 리ν΄νκΈ° λλ¬Έμ μ΄ κ°μ΄ λ§λμ§ μλμ§λ₯Ό κ²μ¦νλ μν μ μννλ€.
μ°Έκ³ μλ£
κ΅μ¬: μ€νλ§λΆνΈμ AWSλ‘ νΌμ ꡬννλ μΉ μλΉμ€
λκΈλ¨κΈ°κΈ°