프로그래밍 노트/TEST를 해보자
[Fixture Monkey] 테스트 생산성 향상을 위해 Fixture Monkey를 찍먹해보자
깡냉쓰
2024. 10. 2. 16:45
728x90
반응형
Fixture Monkey?
- The easiest way to generate controllable arbitray test objects
테스트를 수행할 때 필드가 많은 객체 생성이 필요할때가 있다.
Fixture Monkey를 사용하면 테스트 케이스에 맞는 필드값만 설정하고 나머지 필드는 임의의 값으로 생성되게하여 객체를 손쉽게 생성할 수 있다.
FixtureMonkey 생성
val fixtureMonkey = FixtureMonkey
.plugin(KotlinPlugin())
.build()
// fixtureMonkey로 객체를 생성하게 되면 필드 타입에 맞는 임의의값이 생성되는데
// 특정 필드 타입의 제약조건을 전역적으로 생성하고 싶다면, 아래와 같이 Cusomization Options 를 설정할 수 있다.
// https://naver.github.io/fixture-monkey/v1-0-0/docs/fixture-monkey-options/customization-options/
// String 타입에 알파벳만 1~10자로 입력 되도록
val fixtureMonkey = FixtureMonkey
.builder()
.plugin(KotlinPlugin())
.plugin(
JqwikPlugin().javaTypeArbitraryGenerator(
object : JavaTypeArbitraryGenerator {
override fun strings(): StringArbitrary =
Arbitraries
.strings()
.alpha()
.ofMinLength(1)
.ofMaxLength(10)
},
),
).build()
객체 생성
// 임의의 값으로 객체를 생성
val user: RegistrationUser = fixtureMonkey.giveMeOne()
// 특정 값을 지정 후 객체 생성
val user: RegistrationUser = fixtureMonkey
.giveMeBuilder<RegistrationUser>()
.setExp(RegistrationUser::name, "딩동댕")
.sample()
// 특정 컬렉션 수를 제한해서 생성
val user: RegistrationUser = fixtureMonkey
.giveMeBuilder<RegistrationUser>()
.size(hobbyList, 5)
.sample()
개발자가 일일이 필드값을 셋팅해서 생성해주지 않는 것만으로도 생산성이 올라간다.
나머지 유용한 기능을 사용할때 마다 추가해 놓자.
728x90
반응형