[TDD, Clean Code with JAVA] 자동차 경주 미션 1

Dayeon myeong·2021년 4월 14일
0

1단계 학습 테스트

junit 5 테스트 코드 작성 방법

각 메서드마다 테스트 코드를 작성한다.
테스트 코드를 작성할 때에는 여러 어노테이션을 사용하여 테스트 코드를 작성할 수 있다.

  • @Test : 테스트임을 나타내기
  • @ParameterizedTest : 메서드가 매개변수화된 테스트임을 나타낸다.
  • @BeforeEach : 테스트 코드 작성 전 실행
  • @DisplayName : 테스트 코드에 대한 설명
public class CarTest {

    @ParameterizedTest
    @ValueSource(strings = {"one","two","three","four"})
    @DisplayName("Car 객체 생성")
    public void makeCar(String carName) {
        assertThatCode(() -> new Car(carName))
                .doesNotThrowAnyException();
    }


    @Test
    @DisplayName("자동차 전진")
    public void moveCar() {
        Car car = new Car("one");
        car.move(() -> true);
        assertEquals(1,car.getPoisition());
    }

    @Test
    @DisplayName("자동차 멈춤")
    public void stopCar() {
        Car car = new Car("one");
        car.move(() -> false);
        assertEquals(0,car.getPoisition());
    }


}

public class CarRacingInformationTest {

    List<String> carNameList;
    CarRacingInformation carRacingInformation;

    @BeforeEach
    void setUp() {
        carNameList
                = Arrays.asList(new String[]{"one", "two", "three", "four"});

        carRacingInformation = new CarRacingInformation();
    }
    
    
    @Test
    @DisplayName("입력값(자동차 수,경기 횟수)이 0 이하인 경우 확인")
    public void isZeroOrLess() {
       assertThatThrownBy(() -> {
            carRacingInformation.setCarRacingCount(-1);
        }).isInstanceOf(IllegalArgumentException.class);
    }
    
    
    @Test
    @DisplayName("경주 시도횟수가 1씩 줄어드는지")
    public void checkCarRacingCount() {

        carRacingInformation.setCarRacingCount(5);
        carRacingInformation.minusCarRacingCount();

        assertEquals(4,carRacingInformation.getCarRacingCount());
    }
}
profile
부족함을 당당히 마주하는 용기

0개의 댓글