새로 배운 annotation
- @DisplayName(""): 테스트에 표시 이름을 붙이는 annotation
- @Disabled
- : 특정 테스트를 실행하고 싶지 않을 때
- @ParameterizedTest + @ValueSource
- test메소드에 파라미터 값을 넣어준다. → 즉 여러가지의 값에 대해 동일한 테스트를 하고 싶을 때 사용한다.
- ex) 길이가 1이상 5이하인 문자열인지 테스트 → 길이가 1미만인 문자열 테스트 + 5초과인 문자열 테스트 이렇게 두 가지의 테스트가 필요하다.
- @ParameterizedTest(name="여기에 각 파리미터마다의 표시 이름이 들어간다")
- @ValueSource(타입={넣을 값들의 배열}) : 배열 각 원소를 파라미터에 넣어준다.
- 항상 @Test가 붙어있는 메소드만 실행을 하는데, @ParameterizedTest가 @Test의 그런 기능도 포함한다.
예외 처리
java에서 실행 예외 종류
실행 예외(RuntimeException) : 컴파일러가 예외 처리 여부를 확인하지 않는다 → 개발자가 예외 처리 코드의 추가 여부를 결정해야 한다.
- IllegalArgumentException : 메소드에 부적절한 인수를 전달할 때 발생
- ArithmeticException : 0으로 나누기와 같은 부적절한 산술 연산을 수행할 때 발생
- IndexOutOfBoundsException : 벗어난 범위의 인덱스 사용시 발생
- NoSuchElementException : 요구한 원소가 없을 때 발생
- NullPointerException : Null 값을 가진 참조 변수에 접근할 때 발생
- NumberFormatException : 숫자로 바꿀 수 없는 문자열을 숫자로 변환하려 할 때 발생
- RuntimeException : 실행 예외
public static void validateCarNameLength(String name) {
if (name.length() > MAX_CAR_NAME_LENGTH) {
throw new IllegalArgumentException("이름은 5자 이하만 가능하다.");
}
}
예외 테스트하기
@Test
@DisplayName("이름이 null, 공백이 아닌지 확인")
public void carNameShouldNotBeNullOrEmptyTest() {
assertThrows(IllegalArgumentException.class, ()->{
Car car = new Car(null);
});
}
@ParameterizedTest(name = "1자리 미만이거나 5자리를 초과하면 IllegalArgumentException 발생 (carName = {arguments})")
@DisplayName("5자리 이하인지 확인")
@ValueSource(strings = {"", "overFive"})
public void carNameShouldBeUnderFiveTest(String name) {
assertThrows(IllegalArgumentException.class, () -> {
Car.of(name);
});
}
오늘 내용 전체 실습
아래의 2021.06.28의 커밋을 보면 오늘 내가 공부하고 실습한 내용을 볼 수 있다.
https://github.com/Hyun-juhee/java-racingcar/commits/develop
반응형
'서버 > TDD' 카테고리의 다른 글
[TDD 공부-java] 4) 테스트 코드 작성 개선사항 (0) | 2021.07.10 |
---|---|
[TDD 공부-java] 2) 테스트 코드 작성 순서 익히기 (0) | 2021.04.11 |
[TDD 공부-java] 1) intellij에서 JUnit 설정 및 간단한 테스트 코드 작성 (0) | 2021.04.07 |
[TDD 공부-java] 0) 어떻게 무엇을 공부할지 (0) | 2021.04.07 |