Fixture Monkey 간단 사용법

이건영·2023년 6월 11일
0
post-custom-banner

Fixture Monkey란?

  • 재사용 가능하고 복잡한 테스트 객체를 자동으로 생성해주는 자바 라이브러리
  • 테스트 수행에 필요한 픽스쳐를 간편하게 바인딩해주고 랜덤한 값을 넣어줄 수 있는 라이브러리

Fixture Monkey 사용 이유?

  • 테스트코드의 중요성은 제쳐두고, 테스트코드를 작성하는데 소요되는 시간이 너무 많이든다
  • 개발하다보면 편협한 시야로, 엣지케이스를 놓치는 경우가 생긴다
  • 다양한 테스트로 커버리지를 높이기 위해 다양한 객체생성으로 코드가 길어진다
  • 길어진 given 단계 때문에 코드의 가독성이 떨어진다

사용법

  • Person class
    - Javax annotaion을 통해 간단하게 제약 조건을 가지는 객체를 자동으로 생성 해줌
public class Person {
	@NotNull
	private String personId;
    
    @NotBlank
    private String personName;
    
    private Gender gender;
    
    @Size(min = 1, max = 16)
    private String personNo;
    
    @Min(0)
    private int age;
    
    @Size(max = 5)
    private List<Car> carList;
    
    private List<String> addressList;
    
    public enum Gender {
    	MAN, WOMAN
    }
}
  • fixture monkey 간편 예제1
void checkPerson() {
	//given
    FixtureMonkey sut = FixtureMonkey.create();

  	//when
  	Person person = sut.giveMeOne(Person.class);

  	//then
  	then(person.getPersonId()).isNotNull();
  	then(person.getPersonName()).isNotBlank();
 	 then(person.getPersonNo().length()).isBetween(1, 16);
 	 ...
}
  • fixture monkey 간편 예제2
void checkPerson() {
	//given
    FixtureMonkey sut = FixtureMonkey.create();
    
    //when
    Person person = sut.giveMeBuilder(Person.class)
    	.set("personId", "PERSON_ID_1")
        .setNull("gender")
        .setPostCondition("carList[*].price", Long.class, it -> it > 10000)
        .setPostCondition("addressList[*]", String.class, it -> it.length() > 10)
        .sample();
  	
 	 ...
}

자세한 설명과 참고는 아래 사이트에서

profile
일단 해보자
post-custom-banner

0개의 댓글