재현 가능한 생성
Fixture Monkey는 기본적으로 실행할 때마다 다른 값을 생성합니다. 무작위로 생성된 fixture가 버그를 드러냈다면 이를 결정적으로 재현하고 싶을 것입니다. 빌더에 고정 seed를 설정하면 생성이 재현 가능해집니다.
빌더에 seed 고정하기
- Java
- Kotlin
FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
.seed(12345L)
.build();
val fixtureMonkey = FixtureMonkey.builder()
.plugin(KotlinPlugin())
.seed(12345L)
.build()
seed를 고정하면 동일한 빌더가 실행마다 동일한 값을 생성하며, v1.2.0부터는 컨테이너 크기까지 동일하게 재현됩니다.
@Seed로 단일 테스트 재현하기
JUnit 5 extension을 사용할 때는 테스트에 @Seed를 붙여 seed를 고정할 수 있습니다. 테스트가 실패하면 extension이 실패를 유발한 seed를 로그로 남겨 나중에 재현할 수 있습니다.
@Seed(12345L)
@Test
void reproducibleTest() {
// 항상 동일한 값을 생성합니다
}
정보
v1.2.0부터 활성화된 @Seed가 FixtureMonkeyBuilder#seed(long)보다 우선합니다. @Seed(또는 FixtureMonkeySeedExtension)가 활성인 동안에는 빌더 자체의 seed가 무시됩니다. seed는 테스트 범위로 스코프되고 이후 해제됩니다. 테스트나 다른 extension이 예외를 던져도 해제되므로 이후 테스트로 누수되지 않습니다.