본문으로 건너뛰기

@ValueAutoSource

@ValueAutoSource 어노테이션은 @ValueSource@AutoSource의 기능을 결합하여 테스트 인수를 생성하는 더 유연한 방법을 제공합니다. 구체적으로, 첫 번째 매개변수에 미리 정의된 값을 할당하고 나머지 매개변수에 대해 임의의 값을 생성합니다.

사용 방법

@ValueAutoSource 어노테이션을 사용하려면 테스트 메서드 위에 어노테이션을 추가하고 @ValueSource와 마찬가지로 strings, ints 등의 속성을 사용하여 첫 번째 매개변수의 값을 지정합니다.

다음은 그 예입니다.

@ParameterizedTest
@ValueAutoSource(strings = {"foo"})
void testMethod(String arg1, String arg2) {
assertEquals("foo", arg1);
assertNotEquals(arg1, arg2);
}

이 경우, arg1"foo"로 설정되고, arg2는 자동으로 생성된 값을 받습니다. 이 테스트는 arg1이 정확히 "foo"이고 arg2arg1과 다르다는 것을 확인합니다.

@Freeze와의 호환성

@ValueAutoSource 어노테이션은 @Freeze 어노테이션과 완벽하게 호환되므로 특정 매개변수 값을 수정하는 동시에 다른 매개변수에 대해 미리 정의된 값을 제공할 수 있습니다.

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

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

혜택

  1. 고정 및 난수 값 결합: @ValueAutoSource를 사용하면 특정 매개변수 값을 지정하는 동시에 다른 매개변수에 대해 AutoParams가 임의의 값을 생성하도록 하여 두 가지의 장점을 모두 활용할 수 있습니다.
  2. 향상된 유연성: 이 기능을 사용하면 테스트 데이터를 더 잘 제어할 수 있어 다양한 시나리오를 보다 쉽게 ​​다룰 수 있습니다.
  3. 테스트 복잡성 감소: @ValueSource@AutoSource의 기능을 결합하면 테스트 설정이 간소화되어 읽기 및 유지 관리가 더 쉬워집니다.

@ValueAutoSource 어노테이션은 테스트 툴킷에 다재다능한 기능을 추가하여, 자동화된 무작위 데이터 생성의 이점을 유지하면서도 테스트 데이터를 효과적으로 제어할 수 있습니다.