Junit5부터 파라미터 테스트를 사용할 수 있다.
파라미터 테스트
파라미터 테스트란?
- 여러 argument를 사용해 테스트를 여러번 돌릴 수 있는 기능
- 사용을 위해 @Test 대신 @ParameterizedTest를 붙여준다.
- @ParameterizedTest를 사용하면 최소 하나의 source 어노테이션을 붙여줘야 한다.
의존성 추가하기
@ParameterizedTest를 사용하기 위해서는 우선 JnuitParams 의존성을 추가해줘야한다.
프로젝트 환경(Maven, Gradle)에 맞춰 의존성을 추가해주도록 하자.
✅ Maven (버전 확인하기)
<dependency>
<groupId>pl.pragmatists</groupId>
<artifactId>JUnitParams</artifactId>
<version>1.1.1</version>
<scope>test</scope>
</dependency>
✅ Gradle
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.0'
중복 코드 제거하기
파라미터 테스트를 사용하면 테스트 코드에 중복 코드를 제거할 수 있다!
✅ 중복 제거 전
public class WordTest {
private Word word;
@BeforeEach
void setUp() {
word = new Word();
}
@Test
void 글자수1() {
Word word = new Word();
int length = word.length("가");
Assertions.assertThat(length).isEqualTo(1);
}
@Test
void 글자수2() {
Word word = new Word();
int length = word.length("가나");
Assertions.assertThat(length).isEqualTo(2);
}
@Test
void 글자수3() {
Word word = new Word();
int length = word.length("가나다");
Assertions.assertThat(length).isEqualTo(3);
}
}
✅ 중복 제거 후
public class WordTest {
private Word word;
@BeforeEach
void setUp() {
word = new Word();
}
@ParameterizedTest
@CsvSource({"가, 1", "가나, 2", "가나다, 3"})
void length(String str, int expected) {
int length = word.length(str);
Assertions.assertThat(length).isEqualTo(expected);
}
}
위와 같이 @ParameterizedTest를 사용하면 하나의 테스트 메소드로 여러 개의 파라미터에 대해서 테스트할 수 있다.
Reference
JUnit5 Parameterized Tests 사용하기
파라미터 테스트를 하는 방법 (Junit5 / JUnitParams)
'☕ Java > 이론' 카테고리의 다른 글
정적 팩토리 메서드(static factory method) (0) | 2023.06.12 |
---|---|
[Java] 체크 예외와 언체크 예외 (0) | 2023.03.07 |
[Java] 추상 클래스 (0) | 2022.08.30 |
[Java] 스트림 (Stream) (0) | 2022.02.08 |
[Java] Optional 클래스 (0) | 2022.02.07 |
[Java] 메소드 참조 (Method References) (0) | 2022.02.04 |
[Java] 함수형 인터페이스 (0) | 2022.02.03 |
[Java] 람다 (0) | 2022.01.28 |