@DisplayName
JUnit 테스트 결과 화면에 테스트 내용을 알아보기 쉽게 해주는 기능입니다.
@DisplayName를 사용하지 않은 경우
@Test
public void split_test() throws Exception {
// given
String input = "1,2";
// when
String[] splitArray = input.split(",");
// then
assertThat(splitArray).contains("1");
assertThat(splitArray).contains("2");
}
@DisplayName를 사용한 경우
@Test
@DisplayName("split 했을 때 1과 2로 잘 분리되는지 확인")
public void split_test() throws Exception {
// given
String input = "1,2";
// when
String[] splitArray = input.split(",");
// then
assertThat(splitArray).contains("1");
assertThat(splitArray).contains("2");
}
@ParameterizedTest
중복 코드를 제거할 때 활용됩니다.
아래 코드는 정상 작동하지만 중복되는 코드가 보입니다.
@Test
@DisplayName("contains() 메소드를 활용해 1, 2, 3의 값이 존재하는지 확인")
public void contains_확인() throws Exception {
// given
int num1 = 1;
int num2 = 2;
int num3 = 3;
// when
boolean result1 = numbers.contains(num1);
boolean result2 = numbers.contains(num2);
boolean result3 = numbers.contains(num3);
// then
assertThat(result1).isTrue();
assertThat(result2).isTrue();
assertThat(result3).isTrue();
}
@ParameterizedTest를 아래와 같이 사용하면 중복 코드를 제거할 수 있습니다.
예시 코드1
@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
@DisplayName("ParameterizedTest를 사용하여 contains 테스트")
public void ParameterizedTest_contains_확인(int inputNum) throws Exception {
// given
int num = inputNum;
// when
boolean result = numbers.contains(num);
// then
assertThat(result).isTrue();
}
- @ValueSource: 테스트마다 순차적으로 입력되는 입력값입니다.
- 입력값이 메서드 매개변수인 inputNum으로 전달됩니다.
결과
예시 코드2
@ParameterizedTest
@CsvSource(value = {"1, true", "2, true", "3, true", "4, false", "5, false"})
@DisplayName("CsvSource 사용하여 contains 테스트")
public void CsvSource_contains_확인(int inputNum, boolean inputResult) throws Exception {
// given
int num = inputNum;
// when
boolean result = numbers.contains(num);
// then
assertThat(result).isEqualTo(inputResult);
}
- @CsvSource: 테스트마다 순차적으로 입력되는 값이며, 콤마(,)를 기준으로 구분되서 메서드 매개변수로 전달됩니다.
- "1, true"를 예로 들면 콤마(,)를 기준으로 inputNum에는 1이 전달되고, inputResult에는 true가 전달됩니다.
결과
'Java' 카테고리의 다른 글
JVM 구조 (0) | 2021.10.26 |
---|---|
자바, JVM, JDK, JRE (0) | 2021.10.26 |
[JUnit] AssertJ 활용하기 (0) | 2021.09.30 |
[테스트] Mockito를 사용하여 단위 테스트하기 (0) | 2021.09.09 |
[Effective Java] 아이템11 - equals를 재정의하려거든 hashCode도 재정의하라 (0) | 2021.09.09 |
댓글