본문 바로가기
test & refactoring

[테스트 및 리팩토링 8편] fixture-monkey 정리

by 무대포 개발자 2023. 5. 5.
728x90
반응형

source 는 Github 에 있습니다.

목차는 테스트 & 리팩토링 목차 에 있습니다.

[테스트 및 리팩토링 8편] fixture-monkey 정리

fixture-monkey

  • 테스트 데이터를 만들어주는 오픈소스입니다.
  • 나중에 찾아볼 용도로 정리했습니다.

source

  • 자바, gradle 환경 에서 실행했습니다. (Java17)
  • gradle 설정하는데 시간이 오래걸렸는데 처음에는 fixture-monkey-starter 만 설치하면 관련 plugin 은 전부 import 되는줄 알았는데, 그게 아니였습니다. 그래서 그냥 서드 파티 관련 gradle 설정을 전부 넣어버렸습니다.
  • 아래 중에 필요한 서드 파티 설정만 추가하시면 될 것 같습니다.

주의사항으로는 FixtureMonkey 를 통해 데이터를 만들 때, 사용한 annotation 이 Jakarta 이면 JakartaValidationPlugin 을 써줘야 하고, Javax annotation 을 썼으면 JavaxPlugin 을 사용해야합니다.

    
    // fixture-monkey
    testImplementation('com.navercorp.fixturemonkey:fixture-monkey-starter:0.5.2')
    testImplementation('com.navercorp.fixturemonkey:fixture-monkey-javax-validation:0.5.2')
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-jackson:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-jakarta-validation:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-junit-jupiter:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-autoparams:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-engine:0.5.2")
    
@Data
public class UserInfo {

    @NotNull
    private Long id;
    @NotBlank
    private String name;

    @Min(1)
    @Max(150)
    private int age;
}




class UserInfoTest {
    @Test
    void jakarataValidation_숫자_MIN_MAX_테스트() {
        final FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
                .plugin(new JakartaValidationPlugin())
                .build();
        // when
        final UserInfo userInfo = fixtureMonkey.giveMeOne(UserInfo.class);

        // then
        assertAll(
                () -> assertThat(userInfo.getAge()).isBetween(1, 150)
        );
    }


    @DisplayName("값에 대한 범위를 지정해서 테스트 할 수 있음")
    @Test
    void 값에_대한_범위_지정_테스트() {
        final FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
                .plugin(new JavaxValidationPlugin())
                .build();
        // when
        final UserInfo userInfo = fixtureMonkey.giveMeBuilder(UserInfo.class)
                .set("id", Arbitraries.longs().between(1, 100))
                .sample();

        // then
        assertThat(userInfo.getId()).isBetween(1L, 100L);
    }
}

Reference

댓글