본문으로 건너뛰기

복합 개체

더 복잡한 개체의 경우, 공개 생성자와 임의의 인수를 사용하여 테스트 데이터를 생성합니다. 클래스에 여러 개의 공개 생성자가 있는 경우 매개변수가 가장 적은 생성자를 선택하여 개체를 초기화합니다.

@AllArgsConstructor
@Getter
public class ComplexObject {
private final int value1;
private final String value2;
}
@ParameterizedTest
@AutoSource
void testMethod(ComplexObject arg) {
}

생성자 선택 정책

AutoParams가 복합 유형의 개체를 생성할 때, 생성자에 대한 다음 선택 기준을 준수합니다.

  1. @ConstructorProperties 어노테이션이 붙은 생성자를 우선합니다.
  2. 해당 어노테이션이 없으면 매개변수가 가장 적은 생성자를 선택합니다.
@Getter
public class ComplexObject {

private final int value1;
private final String value2;
private final UUID value3;

@ConstructorProperties({"value1", "value2, value3"})
public ComplexObject(int value1, String value2, UUID value3) {
this.value1 = value1;
this.value2 = value2;
this.value3 = value3;
}

@ConstructorProperties({"value1", "value2"})
public ComplexObject(int value1, String value2) {
this(value1, value2, null);
}

public ComplexObject(int value1) {
this(value1, null, null);
}
}
@ParameterizedTest
@AutoSource
void testMethod(ComplexObject arg) {
assertNotNull(object.getValue2());
assertNull(object.getValue3());
}