[Java] 단위테스트

16 Nov 2023 - juno

#java  #unittest  #testcode 


우아한 테크코스를 진행하면서 알게된 단위테스트 방법


단위테스트

public class Car{
	private int position;

	public Car(){
		this.position = 0;
	}
	
	// 명령한 수만큼 move() 메서드를 실행시키는 기능
	public void moveAsOrdered(final int orderCount){
		this.position += orderCount;
	}

	public int getPosition(){
		return position;
	}
}

Given When Then 패턴

적용 예시

@Test
@Displayname("자동차는 명령을 받은 만큼 이동거리가 증가한다")
void car_moves_as_ordered(){
	// given(주어진 값)
	int orderedCount = 10;
	Car car = new Car();

	// when(기능 작동)
	car.moveAsOrderd(orderedCount);
	int distanceResult = car.getPosition();

	// then (기능 작동 후 검증)
	assertThat(distanceResult).isEqualTo(orderedCount);
}

@ParameterizedTest - 여러값을 테스트하는 어노테이션

예시 racingcar-6 과제 중에서

@ParameterizedTest
    @CsvSource(value = {"4:-", "3:''", "9:-"}, delimiter = ':')
    @DisplayName("랜덤값이 4이상이면 전진하는 기능")
    void moveOrNot_랜덤값이_4이상이면_전진(int randomNumber, StringBuffer expected) {
        Car car = new Car("test");

        gameController.moveOrNot(car, randomNumber);

        assertThat(car.getForwardDistance().toString()).isEqualTo(expected.toString());
    }

FIRST 원칙

reference

우아한 테크, [10분 테코톡] 제이의 단위 테스트