728x90
1. JUnit
TDD : 테스트 주도 개발에서 사용하지만 코드의 유지보수 및 운영 환경에서의
에러를 미리 방지하기 위해서 단위별로 검증하는 테스트 프레임워크
_________________________________________________________________
JUnit : Java 기반의 단위 테스트를 위한 프레임워크
Annotation 기반으로 테스트를 지원하며 Assert를 통하여 검증
- mockito dependencies
testImplementation group: 'org.mockito', name: 'mockito-core', version: '4.2.0'
testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '4.2.0'
_________________________________________________________________
Jacoco
java 코드의 코드 커버리지를 체크하는 라이브러리
결과를 html, xml , csv로 확인 가능



@ExtendWith(MockitoExtension.class)
public class DollarCalculatorTest {
@Mock
public MarketApi marketApi; :: Mock 처리 대상
@BeforeEach :: 테스트가 실행되기 이전에
public void init(){
:: marketApi.connect() 이 호출이 될때 3000 return
Mockito.lenient().when(marketApi.connect()).thenReturn(3000);
}
@Test
public void mockTest(){
:: 매번 다른값이 나올때 모킹 처리
:: 특정 개체가 어떤 메소드가 호출이 되었을때 원하는값 return
:: MarketApi marketApi = new MarketApi(); 대신 public MarketApi marketApi;
DollarCalculator dollarCalculator = new DollarCalculator(marketApi);
dollarCalculator.init();
Calculator calculator = new Calculator( dollarCalculator );
Assertions.assertEquals(60000 , calculator.sum(10,10));
Assertions.assertEquals(0 , calculator.minus(10,10));
}
}
2. REST API CRUD 테스트

Service( component ) Test
__________________________________
@SpringBootTest
public class DollarCalculatorTest {
@MockBean
private MarketApi marketApi;
@Autowired
private Calculator calculator;
@Test
public void dollarCalculatorTest(){
Mockito.when(marketApi.connect()).thenReturn(3000);
int sum = calculator.sum(10,10);
int minus = calculator.minus(10,10);
Assertions.assertEquals(60000 , sum);
Assertions.assertEquals(0 , minus);
}
}
Controller Test
__________________________________
@WebMvcTest(CalculatorApiController.class)
@AutoConfigureWebMvc
@Import({Calculator.class , DollarCalculator.class})
public class CalculatorApiControllerTest {
@MockBean
private MarketApi marketApi;
@Autowired
private MockMvc mockMvc; :: mvc를 Mocking으로 테스트 하겟다.
@BeforeEach
public void init(){
Mockito.when(marketApi.connect()).thenReturn(3000);
}
@Test //GET , delete
public void sumTest() throws Exception {
// http://localhost:8080/api/sum
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 //post , put
public void minusTest() throws Exception {
Req req = new Req();
req.setX(10);
req.setY(10);
String json = new ObjectMapper().writeValueAsString(req);
mockMvc.perform(
MockMvcRequestBuilders.post("http://localhost:8080/api/minus")
.contentType(MediaType.APPLICATION_JSON)
.content(json)
).andExpect(
MockMvcResultMatchers.status().isOk()
).andExpect(
MockMvcResultMatchers.jsonPath("$.result").value("0")
).andExpect(
MockMvcResultMatchers.jsonPath("$.response.resultCode").value("ok")
).andDo(MockMvcResultHandlers.print());
}
}
3. Jacoco


728x90