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
반응형
'프로그래밍 노트 > TEST를 해보자' 카테고리의 다른 글
테스트 코드 작성 이유 (0) | 2024.10.14 |
---|---|
[Kotest] 몇 가지 팁 (0) | 2023.10.26 |
[Kotest] kotest, mockk 사용하기 (0) | 2023.10.25 |
[Mockito] @Spy, @SpyMock 스터빙(stubbing)(thenReturn vs doReturn) (0) | 2020.12.14 |
[Mockito] Mockito이용하여 테스트하기(@Mock, @Spy, @InjectMocks, @MockBean, @SpyBean) (1) | 2020.12.14 |