개발강의정리/Spring

[스프링 기반 REST API 개발] 4-4. 테스트 코드 리팩토링

nineDeveloper 2020. 3. 31.
728x90

스프링 기반 REST API 개발

4. 이벤트 목록 조회 및 수정 REST API 개발

포스팅 참조 정보

GitHub

공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다

해당 포스팅에 대한 내용의 GitHub 주소

실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다

https://github.com/freespringlecture/spring-rest-api-study/tree/chap04-04_test_code_refectoring

해당 포스팅 참고 인프런 강의

https://www.inflearn.com/course/spring_rest-api/dashboard

실습 환경

  • Java Version: Java 11
  • SpringBoot Version: 2.1.2.RELEASE

4. 테스트 코드 리팩토링

여러 컨트롤러 간의 중복 코드 제거하기

  • 클래스 상속을 사용하는 방법
  • @Ignore 애노테이션으로 테스트로 간주되지 않도록 설정

BaseControllerTest 라는 리팩토리용 설정 클래스 생성

공용으로 사용하는 중복 애노테이션과 의존성 주입 코드를 한군데 모아서 중복을 제거
사용하는 곳에서는 extends 로 상속을 받아서 사용하면 됨

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@AutoConfigureRestDocs
@Import(RestDocsConfiguration.class)
@ActiveProfiles("test")
@Ignore
public class BaseControllerTest {

    @Autowired
    protected MockMvc mockMvc;

    @Autowired
    protected ObjectMapper objectMapper;

    @Autowired
    protected ModelMapper modelMapper;
}

EventControllerTests 가 BaseControllerTest를 상속받도록 수정

BaseControllerTest 를 상속받도록 수정하고 BaseControllerTest 에 이미 설정된 어노테이션과 @Autowired 객체 제거

// 어노테이션 제거
// @RunWith(SpringRunner.class)
// @SpringBootTest
// @AutoConfigureMockMvc
// @AutoConfigureRestDocs
// @Import(RestDocsConfiguration.class)
// @ActiveProfiles("test")
public class EventControllerTests extends BaseControllerTest {

    // @Autowired 객체 제거
    // MockMvc mockMvc;

    // @Autowired 객체 제거
    // ObjectMapper objectMapper;

    // @Autowired 객체 제거
    // ModelMapper modelMapper;

IndexControllerTest 도 BaseControllerTest를 상속받도록 수정

BaseControllerTest 를 상속받도록 수정하고 BaseControllerTest 에 이미 설정된 어노테이션과 @Autowired 객체 제거

// 어노테이션 제거
// @RunWith(SpringRunner.class)
// @SpringBootTest
// @AutoConfigureMockMvc
// @AutoConfigureRestDocs
// @Import(RestDocsConfiguration.class)
// @ActiveProfiles("test")
public class IndexControllerTest extends BaseControllerTest {

    // @Autowired 객체 제거
    // MockMvc mockMvc;
728x90

댓글

💲 추천 글