복합 개체
더 복잡한 개체의 경우, 공개 생성자와 임의의 인수를 사용하여 테스트 데이터를 생성합니다. 클래스에 여러 개의 공개 생성자가 있는 경우 매개변수가 가장 적은 생성자를 선택하여 개체를 초기화합니다.
- Java
- Kotlin
@AllArgsConstructor
@Getter
public class ComplexObject {
private final int value1;
private final String value2;
}
class ComplexObject (val value1: Int, val value2: String)
- Java
- Kotlin
@ParameterizedTest
@AutoSource
void testMethod(ComplexObject arg) {
}
@ParameterizedTest
@AutoSource
fun testMethod(arg: ComplexObject) {
}
생성자 선택 정책
AutoParams가 복합 유형의 개체를 생성할 때, 생성자에 대한 다음 선택 기준을 준수합니다.
@ConstructorProperties
어노테이션이 붙은 생성자를 우선합니다.- 해당 어노테이션이 없으면 매개변수가 가장 적은 생성자를 선택합니다.
- Java
- Kotlin
@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);
}
}
class ComplexObject
@ConstructorProperties("value1", "value2, value3")
constructor (val value1: Int,
val value2: String?,
val value3: UUID?) {
@ConstructorProperties("value1", "value2")
constructor(value1: Int, value2: String)
: this(value1, value2, null)
constructor(value1: Int): this(value1, null, null)
}
- Java
- Kotlin
@ParameterizedTest
@AutoSource
void testMethod(ComplexObject arg) {
assertNotNull(object.getValue2());
assertNull(object.getValue3());
}
@ParameterizedTest
@AutoSource
fun testMethod(arg: ComplexObject) {
assertNotNull(arg.value2)
assertNull(arg.value3)
}