[TDD,Clear Code with JAVA]レーシングカーミッション1


第1段階テスト学習
JUnit 5テストコードの作成方法
各メソッドのテストコードを作成します.
テストコードを作成する場合は、さまざまな方法でテストコードを作成できます.
  • @テスト:
  • はテストを表します
  • @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());
        }
    }