인프런 커뮤니티 질문&답변

Joe Hidden님의 프로필 이미지

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

한 눈에 들어오는 Test Fixture 구성하기

Fixture 사용에 있어서...

23.07.04 21:57 작성

·

486

0

  • 학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!

  • 먼저 유사한 질문이 있었는지 검색해 보세요.

  • 서로 예의를 지키며 존중하는 문화를 만들어가요.

 

이렇게 사용해도, 하나의 도메인에 여러 Builder Fixture가 생기게 될까요?

 

public class Fixture {
public static ProductBuilder aProduct() {
return Product.builder()
.productNumber("001")
.name("아메리카노")
.price(1000)
.type(ProductType.HANDMADE)
.sellingStatus(ProductSellingStatus.SELLING);
}
}

 

final LocalDateTime registeredDate = LocalDateTime.now();
final Product product1 = createProduct(ProductType.HANDMADE, "001", 1000);
final Product product2 = createProduct(ProductType.HANDMADE, "002", 3000);
final Product product3 = createProduct(ProductType.HANDMADE, "003", 5000);
final Product product4 = Fixture.aProduct().productNumber("004").price(7000).build();

 

답변 2

1

박우빈님의 프로필 이미지
박우빈
지식공유자

2023. 07. 07. 09:05

안녕하세요, Joe Hidden님! :)

말씀주신 방법대로 사용해봐도 좋을 것 같네요 👍
객체마다 한 개의 빌더만 사용하면서 기본값 지정도 해줄 수 있을 듯 보이네요.
다만 테스트 케이스마다 주고자 하는 필드가 많이 상이할 경우에는 효과가 조금 떨어질 수도 있을 것 같아요.
(변경이 필요한 모든 필드를 다시 재정의해야 하는 것은 동일해서)

하지만 기존에 제가 언급했던 문제인, 수많은 빌더를 포함하고 있는 Fixture 클래스는 만들지 않아도 될 것으로 보이네요 ㅎㅎ

감사합니다. :)

0

인프런 AI 인턴님의 프로필 이미지

2023. 07. 06. 22:01

안녕하세요, 인프런 AI 인턴이에요.

Fixture 클래스는 빌더 패턴을 사용하여 상품(Product) 객체를 생성하는 메서드를 제공하는 클래스인 것 같네요.

여러 Builder Fixture가 생성되는지에 대해서는, Fixture 클래스가 여러 개의 빌더 메서드를 제공하는지에 따라 달라질 것입니다. 만약 Fixture 클래스 안에 다른 빌더 메서드들도 있다면, 여러 개의 Builder Fixture가 생길 수 있습니다.

예를 들어, Fixture 클래스 안에 다른 Builder 메서드가 추가되었다면, 예를 들면 OrderBuilder, CategoryBuilder 등의 메서드가 있다면, 각각의 메서드마다 Builder Fixture가 생길 수 있습니다.

하지만 예시로 보여주신 코드에서는 Fixture 클래스 안에서만 aProduct() 메서드를 제공하고 있으므로, 하나의 도메인에는 하나의 Builder Fixture가 생길 것입니다.

따라서, Fixture 클래스 내부에 다른 Builder 메서드들을 추가하거나 여러 Fixture 클래스를 만들지 않는 한, 여러 개의 Builder Fixture가 생기지는 않을 것입니다.

더 궁금한 점이 있으신가요? 다른 질문이 있다면 언제든지 물어보세요!