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 |
Comment