Test Patterns For Standard Fixtures Reuse
Object Mother, Test Data Builder, Fixture Monkey, EasyRandom
test spring fixturemonkey designpattern
Test Patterns for Standard Fixtures Reuse
AAA(Arrange, Act, Assert) 패턴을 사용할때 일반적으로 Arrange 단계가 가장 크다.
Arrange 단계에서 standard fixtures 를 반환하는 factory 를 갖는 것이 재사용성 측면에서 좋다. 이때 도움되는 두 가지 패턴으로는 Object Mother 과, Test Data Builder 패턴이 있다. 또한 관련 라이브러리로는 라이브러리로는 Fixture Monkey 와 EasyRandom 이 대표적이다.
Fixture Money 의 탄생 배경 중 하나는 E-Commerce Domain 의 문제점을 해결하기 위함도 있다고 한다.
E-Commerce Domain Problems:
- 객체가 가지고 있는 데이터 항목이 많아 객체 생성 비용이 크다.
- 타 서비스와 연동이 많다.
- 데이터간 정합성이 중요하다.
Fixture Monkey Examples:
@Value
public static class DeliveryAddress {
String baseAddress;
@Nullable
String zipCode;
boolean road;
String telNo1;
@Nullable
String telNo2;
}
// given
FixtureMonkey sut = FixtureMonkey.create();
// when
DeliveryAddress deliveryAddress = sut.giveMeBuilder(DeliveryAddress.class)
.set("road", true)
.sample();
// then
thenNoException()
.isThrownBy(() -> DeliveryAddressValidator.validateRoadAddress(deliveryAddress));