본문으로 건너뛰기
버전: 11.x

autoparams-lombok

autoparams-lombok은 보일러플레이트 코드를 줄이는 데 사용되는 인기 있는 Java 라이브러리인 Project Lombok과의 호환성을 향상시키는 AutoParams용 확장 프로그램입니다.

설치하기

Maven

Maven을 사용한다면, pom.xml에 다음 종속성을 추가하세요.

<dependency>
<groupId>io.github.autoparams</groupId>
<artifactId>autoparams-lombok</artifactId>
<version>11.0.5</version>
</dependency>

Gradle (Groovy)

Gradle Groovy DSL을 사용한다면, build.gradle에 다음 종속성을 추가하세요.

testImplementation 'io.github.autoparams:autoparams-lombok:11.0.5'

Gradle (Kotlin)

Gradle Kotlin DSL을 사용한다면, build.gradle.kts에 다음 종속성을 추가하세요.

testImplementation("io.github.autoparams:autoparams-lombok:11.0.5")

BuilderCustomizer 클래스

롬복의 @Builder 애너테이션을 사용하는 경우 BuilderCustomizer를 사용하면 AutoParams가 빌더를 통해 임의의 개체를 생성할 수 있으므로 수동으로 인스턴스를 구성하지 않고도 테스트를 더 쉽게 작성할 수 있습니다.

다음과 같은 Order 클래스가 있다고 가정해 보겠습니다.

@Builder
@Getter
public class Order {

private final UUID id;
private final UUID productId;
private final Integer quantity;
private final UUID customerId;
private final BigDecimal orderedPriceAmount;
private final String comment;
}

Order 인스턴스를 자동으로 생성하기 위해 테스트에 BuilderCustomizer를 적용합니다.

@Test
@AutoParams
@Customization(BuilderCustomizer.class)
void testMethod(Order order) {
assertThat(order.getId()).isNotNull();
assertThat(order.getProductId()).isNotNull();
assertThat(order.getQuantity()).isNotNull();
assertThat(order.getQuantity()).isPositive();
assertThat(order.getCustomerId()).isNotNull();
assertThat(order.getOrderedPriceAmount()).isNotNull();
assertThat(order.getComment()).isNotNull();
}

이렇게 하면 빌더 호출을 수동으로 구성할 필요가 없으므로 더 깔끔하고 유지 관리하기 쉬운 테스트를 작성할 수 있습니다.

사용자 정의 메서드 이름

클래스가 롬복의 빌더에 builderMethodNamebuildMethodName 속성을 사용하여 메서드 이름을 사용자 정의한 경우, BuilderCustomizer를 확장하여 메서드 이름을 지정하고 사용할 수 있습니다.

예를 들어, 다음 Shipment 클래스를 생각해 보세요.

@Builder(builderMethodName = "getBuilder", buildMethodName = "create")
@Getter
public class Shipment {

private final UUID id;
private final UUID orderId;
private final String postalCode;
private final String address;
private final Boolean shipped;
}

이것을 AutoParams와 호환되게 하려면 사용자 정의 하위 클래스를 정의합니다.

public class ShipmentBuilderCustomizer extends BuilderCustomizer {

public ShipmentBuilderCustomizer() {
super("getBuilder", "create");
}
}

그런 다음 테스트에 적용합니다.

@Test
@AutoParams
@Customization(ShipmentBuilderCustomizer.class)
void testMethod(Shipment shipment) {
assertThat(shipment.getId()).isNotNull();
assertThat(shipment.getOrderId()).isNotNull();
assertThat(shipment.getPostalCode()).isNotNull();
assertThat(shipment.getAddress()).isNotNull();
assertThat(shipment.getShipped()).isNotNull();
}

이를 통해 사용자 정의 빌더 패턴을 사용하면서 자동 개체 생성의 이점을 계속 누릴 수 있습니다.