본문으로 건너뛰기

@CsvAutoSource

@CsvAutoSource 어노테이션은 @CsvSource@AutoSource의 기능을 통합하여 일부 매개변수에 대해 CSV 형식의 인수를 지정하고 나머지 매개변수에 대해 무작위 값을 생성하는 유연성을 제공합니다.

사용 방법

@CsvAutoSource를 사용하려면 테스트 메서드에 어노테이션을 달고 초기 매개변수 집합에 대한 CSV 형식의 입력 값을 제공합니다. 나머지 매개변수는 자동으로 생성된 값으로 채워집니다.

간단한 예를 보겠습니다.

@ParameterizedTest
@CsvAutoSource({"16, foo"})
void testMethod(int arg1, String arg2, String arg3) {
assertEquals(16, arg1);
assertEquals("foo", arg2);
assertNotEquals(arg2, arg3);
}

이 예제는 제공된 CSV 입력에 따라 arg116으로 설정되고 arg2"foo"로 설정됩니다. 한편, arg3은 무작위로 생성된 값이 할당됩니다. 이 테스트는 arg3arg2와 다르다는 것을 확인합니다.

@Freeze와의 호환성

@ValueAutoSource와 마찬가지로 @CsvAutoSource@Freeze 주석과 완벽하게 호환되므로 특정 매개변수의 값을 고정하는 동시에 CSV를 통해 다른 매개변수를 정의할 수 있습니다.

함께 작동하는 방식은 다음과 같습니다.

@AllArgsConstructor
@Getter
public class ValueContainer {
private final String value;
}
@ParameterizedTest
@CsvAutoSource({"16, foo"})
void testMethod(int arg1, @Freeze String arg2, ValueContainer arg3) {
assertEquals("foo", arg3.getValue());
}

혜택

  1. 이중 제어: 일부 매개변수에 대해서는 CSV를 통해 값을 지정하고 다른 매개변수에 대해서는 자동 난수 생성을 허용하는 기능을 통해 테스트 데이터에 대한 높은 수준의 제어가 가능합니다.
  2. 간소화된 테스트: 수동 및 자동 데이터 입력을 모두 허용함으로써 @CsvAutoSource는 복잡한 테스트 설정을 간소화합니다.
  3. 유연하고 포괄적: 이 기능을 사용하면 사전 정의된 값과 무작위 값을 혼합하여 더 광범위한 테스트 시나리오를 포괄할 수 있는 유연성을 제공합니다.

@CsvAutoSource 어노테이션은 테스트 도구 모음의 또 다른 다재다능한 도구로, 매개변수화된 테스트에 정밀도와 커버리지를 모두 추가합니다.