JUnit Test

java test

@ExtendWith(MockitoExtension.class) ////////////////////////
public class CalculatorTest {

    @Mock   /////////////////////////
    public MarketApi marketApi;

    @BeforeEach ///////////////////////
    public void setMarketApi(){
        Mockito.lenient().when(marketApi.connect()).thenReturn(1000); //////////////// =Mockito.when(~)
    }

    @Test
    public void dollarTest(){
        DollarCalculator dollarCalculator=new DollarCalculator(marketApi);
        dollarCalculator.init();

        Calculator calculator=new Calculator(dollarCalculator);
        assertEquals(20000,calculator.sum(10,10));
    }
}

 

1. @ExtendWith(MockitoExtension.class)

2. @Mock

3. @BeforeEach

4. Mockito.lenient().when()

 

 

 

spring test

- componentTest–

@SpringBootTest     /////////////////////
public class DollarCalculatorTest {

    @MockBean ////////////////////////
    private MarketApi marketApi;

    @Autowired ///////////////////////////
    private Calculator calculator;

    @Test
    public void sumTest(){
        Mockito.when(marketApi.connect()).thenReturn(1000);

        Assertions.assertEquals(20000, calculator.sum(10,10));
        Assertions.assertEquals(0, calculator.sub(10,10));
    }
}

1. @SpringBootTest : 스프링 컨텍스트를 로딩해서 테스트에 활용하겠다는 의미

2. @MockBean

3. @Autowired

 

- controllerTest

@WebMvcTest(CalculatorApiController.class) /////////////////
@AutoConfigureWebMvc /////////////////
@Import({Calculator.class, DollarCalculator.class}) /////////////////
public class CalculatorApiControllerTest {

    @MockBean
    MarketApi marketApi;

    @Autowired
    private MockMvc mockMvc; ///////////////////

    @BeforeEach
    public void init(){
        Mockito.when(marketApi.connect()).thenReturn(3000);
    }

    @Test
    public void sumTest() throws Exception {
        // http://localhost:8080/api/sum?x=10&y=10

        mockMvc.perform( ///////////////////
                MockMvcRequestBuilders.get("http://localhost:8080/api/sum") ///////////////////
                .queryParam("x","10")
                .queryParam("y","10")
        )
                .andExpect(MockMvcResultMatchers.status().isOk()) ///////////////////
                .andExpect(MockMvcResultMatchers.content().string("60000"))
                .andDo(MockMvcResultHandlers.print()); ///////////////////
    }

    @Test
    public void subTest() throws Exception {
        // http://localhost:8080/api/sub + body

        Req req=new Req();
        req.setX(10);
        req.setY(5);

        String json=new ObjectMapper().writeValueAsString(req);

        mockMvc.perform(
                MockMvcRequestBuilders.post("http://localhost:8080/api/sub")
                .contentType(MediaType.APPLICATION_JSON)
                .content(json)
        )
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.jsonPath("$.result").value(15000))
                .andExpect(MockMvcResultMatchers.jsonPath("$.response.resultCode").value("OK")) ///////////////////
                .andDo(MockMvcResultHandlers.print());
    }

}

 

1. @WebMvcTest(CalculatorApiController.class)

2. @AutoConfigureWebMvc

3. @Import

4. mockMvc.perform(

5. MockMvcRequestBuilders.get("http://localhost:8080/api/sum")

6. .andExpect(MockMvcResultMatchers.content().string("60000"))

7. .andDo(MockMvcResultHandlers.print());

8. .andExpect(MockMvcResultMatchers.jsonPath("$.response.resultCode").value("OK"))

'BackEnd > 패캠' 카테고리의 다른 글

swagger  (0) 2022.01.28
테스트 커버리지 확인  (0) 2022.01.27
Rest Template (Server to Server 통신)  (0) 2022.01.25
Intercepter  (0) 2022.01.24
Filter (근데 이제 롬복을 곁들인)  (0) 2022.01.23