TestFixture란?
- 테스트 코드에서 공유되는 초기 상태나 리소스를 설정하는 데 사용되는 개념
- 테스트 코드를 작성할 때마다 반복적으로 실행되는 코드를 줄이고, 테스트 코드의 가독성을 높이기 위해 사용
첨언 특정 상태를 고정해놓고 편의상 TestFixture 메서드를 선언하고 활용한다.
개인적인 의견으로 한글 메서드를 쓰면 가독성이 좋을 것으로 판단.
TestFixture 예시
public static Car 가격이_100000인_테슬라() {
return Car.builder()
.name("Tesla")
.price(100000)
.build();
}
- 사용
@Test
@DisplayName("가격이_100000인_테슬라 주문 생성")
void createOrder() {
// given
Car car = CarFixture.가격이_100000인_테슬라();
int quantity = 2;
// when
Order order = Order.builder()
.car(car)
.quantity(quantity)
.build();
// then
assertEquals(car, order.getCar());
assertEquals(order.getCar().getName(), "Tesla");
assertEquals(quantity, order.getQuantity());
}
멀티 모듈 환경에서 TestFixture를 공유하는 방법 (gradle)
- 경로
- testFixtures/java/패키지명/파일명.java
- TestFixture 플러그인 추가 (build.gradle)
plugins {
id 'java-test-fixtures'
}
- 공유할 모듈에 TestFixtures 추가 (build.gradle)
project(':order') {
dependencies {
implementation project(':Car')
testImplementation(testFixtures(project(':Car')))
}
}
마지막으로
멀티모듈이 아닌 경우에 어디에다가 TestFixture을 작성하면 좋을까??
직관적으로 멀티모듈로써의 확장을 위해 멀티모듈의 "testFixtures/java/패키지명/파일명.java"에 넣으면 좋지 않을까 생각이 됩니다.