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
클래스가 있다고 가정해 보겠습니다.
- Java
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class User {
private Long id;
private String name;
private String email;
}
BuilderCustomizer
를 사용하면 테스트를 위한 User
유형의 개체를 생성할 수 있습니다.
- Java
@ParameterizedTest
@AutoSource
@Customization(BuilderCustomizer.class)
void testMethod(User user) {
assertThat(arg.getId()).isNotNull();
assertThat(arg.getName()).isNotNull();
assertThat(arg.getEmail()).isNotNull();
}
사용자 정의 메서드 이름
Lombok의 @Builder
에서 builderMethodName
과 buildMethodName
을 사용하여 빌더 메서드 이름을 사용자 정의한 경우, 사용자 정의 이름을 처리하기 위해 BuilderCustomizer
의 하위 클래스를 생성해야 합니다.
- Java
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
를 확장하는 방법은 다음과 같습니다.
- Java
public class UserBuilderCustomizer extends BuilderCustomizer {
public UserBuilderCustomizer() {
super("getBuilder", "createUser");
}
}
이제 테스트에서 사용자 정의된 UserBuilderCustomizer
를 사용할 수 있습니다.
- Java
@ParameterizedTest
@AutoSource
@Customization(UserBuilderCustomizer.class)
void testMethod(User user) {
assertThat(arg.getId()).isNotNull();
assertThat(arg.getName()).isNotNull();
assertThat(arg.getEmail()).isNotNull();
}
이렇게 하면 @Builder
어노테이션을 사용하는 이점은 그대로 유지하면서 AutoParams가 제공하는 자동 생성 기능도 활용할 수 있습니다.