Christmas Pikachu Mocking 생성하기
카테고리 없음

Mocking 생성하기

ZI_CO 2022. 12. 22.

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외의 다른값을 지정하게되면 계산하는 코드에서 문제가 있다는걸 알 수 있다.

댓글