본문으로 건너뛰기

autoparams-lombok

autoparams-lombok은 Java 애플리케이션의 보일러플레이트 코드를 줄여 주는 라이브러리인 Project Lombok 작업을 보다 쉽게 ​​만들어 주는 AutoParams 라이브러리의 확장 프로그램입니다.

설치하기

Maven

Maven의 경우 pom.xml에 다음 종속성을 추가할 수 있습니다.

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

Gradle

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

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

BuilderCustomizer

@Builder 어노테이션으로 작업할 때 BuilderCustomizer를 사용하여 테스트를 위한 임의의 개체를 생성하는 것을 용이하게 할 수 있습니다. 다음은 예입니다.

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

import lombok.Builder;
import lombok.Getter;

@Builder
@Getter
public class User {
private Long id;
private String name;
private String email;
}

BuilderCustomizer를 사용하면 테스트를 위한 User 유형의 개체를 생성할 수 있습니다.

@ParameterizedTest
@AutoSource
@Customization(BuilderCustomizer.class)
void testMethod(User user) {
assertThat(arg.getId()).isNotNull();
assertThat(arg.getName()).isNotNull();
assertThat(arg.getEmail()).isNotNull();
}

사용자 정의 메서드 이름

Lombok의 @Builder에서 builderMethodNamebuildMethodName을 사용하여 빌더 메서드 이름을 사용자 정의한 경우, 사용자 정의 이름을 처리하기 위해 BuilderCustomizer의 하위 클래스를 생성해야 합니다.

import lombok.Builder;
import lombok.Getter;

@Builder(builderMethodName = "getBuilder", buildMethodName = "createUser")
@Getter
public class User {
private Long id;
private String name;
private String email;
}

BuilderCustomizer를 확장하는 방법은 다음과 같습니다.

public class UserBuilderCustomizer extends BuilderCustomizer {

public UserBuilderCustomizer() {
super("getBuilder", "createUser");
}
}

이제 테스트에서 사용자 정의된 UserBuilderCustomizer를 사용할 수 있습니다.

@ParameterizedTest
@AutoSource
@Customization(UserBuilderCustomizer.class)
void testMethod(User user) {
assertThat(arg.getId()).isNotNull();
assertThat(arg.getName()).isNotNull();
assertThat(arg.getEmail()).isNotNull();
}

이렇게 하면 @Builder 어노테이션을 사용하는 이점은 그대로 유지하면서 AutoParams가 제공하는 자동 생성 기능도 활용할 수 있습니다.