inflearn logo
강의

Course

Instructor

Real-world! TDD through Spring Boot Product-Order API Development

BeforeEach 를 하위 클래스에서 다시 사용하는것에 대해서 질문 드립니다.

562

작성자 없음

0 asked

1

안녕하세요..!

여쭤보고 싶은게 있어서 질문 남깁니다.

현재 테스트의 구조가

ApiTest 라는 클래스를 상속받아서 ProductApiTest를 만들게 되었습니다.

class ProductApiTest extends ApiTest {}

제가 하고 싶은 것은 코드의 중복을 줄이고 싶습니다.

class ProductApiTest extends ApiTest {
    @BeforeEach
    void setUp() {
        ProductSteps.상품등록요청(ProductSteps.상품등록요청_생성());
    }
}

 

이런식으로 상품 조회와 상품 수정을 하게 될때 상품을 등록하게 되는데 이런 코드를 한번만 작성하면 어떨까 생각합니다.

근데 이렇게 테스트를 돌리니 Connection refused 이라는 에러 메세지가 나오면서 테스트가 안돌아갑니다.

아마 RestAssured.port 가 설정이 안되어서 그런것같습니다.

이제 그러면 ApiTest의 필드들은 protected로 수정합니다.

class ProductApiTest extends ApiTest {
   @BeforeEach
    void setUp() {
        if (RestAssured.port == RestAssured.UNDEFINED_PORT) {
            RestAssured.port = port;
            databaseCleanup.afterPropertiesSet();
        }
        databaseCleanup.execute();
        ProductSteps.상품등록요청(ProductSteps.상품등록요청_생성());
    }
}

이렇게 하면 잘 돌아가는것을 확인했습니다.

SET
    REFERENTIAL_INTEGRITY FALSE
Hibernate: 
    TRUNCATE TABLE products
Hibernate: 
    ALTER TABLE products ALTER COLUMN ID RESTART WITH 1
Hibernate: 
SET
    REFERENTIAL_INTEGRITY TRUE

위의 DatabaseCleanup도 한번씩만 돌아가는것을 확인했습니다.

근데 이렇게 재정의 해서 사용하는것이 맞는 방식인가..? 하는 생각이 들기도하고 이런 상황에서는 어떻게 해결하면 될까 싶어서 질문 남깁니다!

 

tdd spring-boot pojo 소프트웨어-테스트 api

Answer 1

0

ejoongseok

안녕하세요 jisu3316님 좋은 시도이신거 같습니다.

Connection refused가 되는 이유로 짐작되는 부분은

하위 클래스의 setup과 상속한 ApiTest의 setup이 메소드 명이 같아서 override되면서 상위클래스의 setup을 실행시키지 않아서 그러는거 같습니다.

하위클래스의 @BeforeEach의 메소드명을 상위클래스와 달리 해주시면 문제 없이 수행될거같습니다 ㅎㅎ

POJO에서 Spring Test로 넘어갈 때 누락(해결됨)

0

29

1

DatabaseCleanup 코드입니당 필요한 분들 쓰세요

0

125

1

이 방법이 TDD가 맞나요?

0

1108

2

POJO로 개발했는데 비즈니스 로직을 로깅해야 할 경우, 어떻게 해야 할까요?

0

336

1

generate -> add Dependency 이 메뉴가 안보이던데, 어떻게 보이게할까요?

0

352

1

실무 Asserta 사용여부가 궁금합니다.

0

454

1

테스트 코드 내의 지역변수를 final로 선언하는 이유가 궁금합니다.

0

528

1

통합테스트와 단위 테스트

0

964

1

의존성 및 설계? 부분 질문드립니다.

0

399

1

테스트 더블

0

394

1

리뷰반영 강의에서 shortcut ctrl + esc 는 어떻게 설정하나요?

0

482

1

POJO

0

596

1

POJO 상품 등록 기능 구현하기 강의 질문

1

543

1

steps 클래스를 사용하는 이유

0

340

1

랜덤 포트를 사용하는 이유

0

1104

1

상품등록 API 개발, JPA로 변환하기 에서

0

873

2

패키지 구조에 대해서 궁금합니다!

0

645

1

ProductService의 updateProduct 로직 질문입니다.

0

556

2

TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼 1로 초기화

2

3494

1

POJO로 개발 후 스프링으로 전환, 이후 JPA 전환하는 이유

4

1283

1

TestRestTemplate 대신에 RestAssured를 사용하는 이유가 있을까요?

0

1187

1

API 테스트로 전환하기

0

1015

1

코드 스타일에 대해서 질문드립니다.

2

1135

1

혹시 강의 중에 나오는 플러그인 좀 알 수 있을까요

0

1218

1