1. 라이브러리 다운로드
https://mvnrepository.com/search?q=Mockito
gradle코드 땡겨오기
// https://mvnrepository.com/artifact/org.mockito/mockito-core
testImplementation group: 'org.mockito', name: 'mockito-core', version: '4.9.0'
// https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter
testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '4.9.0'
gradle코드 추가후 Refresh해주기 그래야지만 라이브러리를 사용가능하다
테스트를 하기위해 Mock객체를 생성하여 예상 결과값을 지정해 테스를 한다.
현재 달러의 환율을 계산하는 코드를 전략패턴으로 짜여있다 환율은 thenReturn에 2000이 셋팅되어있다..
그럼 100 * 2000 + 100 * 2000 = 400000인걸 알수있다. 이렇게 미리 리턴값으 주어 코드에 문제가있는지 테스트 할 수가 있다.
package src;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
// mocking 만들어보자
// 실행순서
// 1. 라이브러리 다운로드
// 2. mocking 객체를 선언하기 - 어노테이션 사용, @ExtendWith(MockitoExtension.class), @Mock
@ExtendWith(MockitoExtension.class)
public class DollerCarculatorTest {
@Mock
public MarketApi mockMarketApi;
@BeforeEach
public void init() {
Mockito.lenient().when(mockMarketApi.connect()).thenReturn(2000);
}
public void test() {
System.out.println("hello JUnit 5 ~~");
}
// @BeforeEach
// public void initTest() {
// System.out.println("----------------");
// System.out.println(DollarCarculator.class.getName());
// System.out.println("----------------");
// }
public void dollar() {
MarketApi api = new MarketApi();
KrwCalculator krwCalcurator = new KrwCalculator();
DollarCarculator dollarCarcurator = new DollarCarculator(api);
Calculator calcurator = new Calculator(dollarCarcurator);
System.out.println(calcurator.plus(100, 100));
System.out.println(calcurator.minus(100, 100));
// 기대값 지정하기
Assertions.assertEquals(300000, calcurator.plus(100, 100));
// 통과 못함
Assertions.assertEquals(0, calcurator.minus(100, 100));
}
@Test
public void mockDollar() {
// mock객체 집어 주입함 !!!
DollarCarculator dollarCarcurator = new DollarCarculator(mockMarketApi);
Calculator calcurator = new Calculator(dollarCarcurator);
System.out.println(calcurator.plus(100, 100));
System.out.println(calcurator.minus(100, 100));
// 기대값 지정하기
Assertions.assertEquals(300000, calcurator.plus(100, 100));
Assertions.assertEquals(0, calcurator.minus(100, 100));
}
}
테스트 실행하기
테스트 이상 무
기대값을 400000외의 다른값을 지정하게되면 계산하는 코드에서 문제가 있다는걸 알 수 있다.
댓글