목록테스트 (3)
공부함
@ParameterizedTest를 사용하는 이유@ParameterizedTest 는 테스트 메서드에 파라미터를 전달해 하나의 테스트 메서드로 여러 파라미터 묶음에 대해 테스트 할 수 있게 하는 기능이다. @ParameterizedTesf를 쓰면 좋은 점이 무엇일까?중복 해소100 종류의 상품에 대한 구매 테스트를 작성한다고 가정하자. @Test 를 사용한다면 100가지의 상품에 대해 전부 테스트 메서드를 작성해야 한다. @ParameterizedTest를 사용하면 상품 구매 테스트 메서드에 파라미터로 100종류의 상품을 전달해 하나의 테스트 코드 메서드를 재활용해 중복을 해소할 수 있다. 유지보수구매 로직에 변경이 생긴다면 @Test로 작성한 100가지의 테스트 메서드를 전부 수정해야 한다. 이 과정에..
DB와 연동한 통합 테스트 코드 작성 시 더미데이터가 필요한 경우가 있다. 상황에 따른 더미데이터 삽입 방법을 알아보자.orm 활용mybatis, jpa와 같은 orm을 사용해 더미데이터를 삽입한다. orm을 통한 삽입 기능이 열려있어야 한다. 사이드프로젝트를 진행 할 때는 상품 데이터를 CRUD하는 기능을 한 프로젝트에 다 만들었다. 하지만 실무에서는 꼭 그렇다는 보장이 없다. web을 통해서는 상품 CRUD가 가능하지만, api는 상품 배송 승인, 반려에만 사용된다면 CREATE 기능은 굳이 개발하지 않을 수 있다. 테스트 시 더미데이터 삽입을 위해 CREATE 기능을 추가할 순 없다. 사용하지 않는 기능을 테스트를 위해 추가하는 것은 배보다 배꼽이 커지는 일이다. 취약점, 버그가 발생할 수 있고 추..
지금까지 테스트 코드를 짜면서 테스트 코드 자체에만 집중했지 테스트 환경에는 크게 관심 없이 남들이 하는대로 가져다 썼던 것 같다. 그래서 이번에는 테스트 환경설정에 대해 알아보려고 한다.@Mock VS @MockBean먼저 mock 관련해 간단하게 알고 넘어가자.@MockMock 객체를 생성해 사용한다.스프링 컨텍스트와 무관하다.단위 테스트에 사용@MockBeanMock 객체를 생성해 스프링 컨텍스트에 등록한다.통합 테스트에 사용@SpringBootTest@SpringBootTest는 전체 애플리케이션 컨텍스트를 로드한다. 즉 모든 빈을 로드한다.@SpringBootTest는 이러한 상황에서 사용하면 좋다.전체 애플리케이션 컨텍스트가 필요할 때통합 테스트를 하고 싶을 때 (모든 빈, 서비스, 컨트롤러 ..