테스트

· 테스트
컨트롤러 단위 테스트를 작성할 때는 @WebMvcTest 등으로 웹 계층의 빈만 주입받는다.이 때 컨트롤러가 의존하는 객체(서비스 등)는 @MockBean 등으로 만들어준다.mock 객체 stubbing을 해야한다나는 이제까지 mock 객체의 메서드가 호출된다면 stubbing을 해줘야 한다고 생각했다.예를 들어 컨트롤러 단위 테스트 시에 서비스는 stubbing을 통해 정상작동하는 것을 보장해야 컨트롤러에 대해서만 테스트 할 수 있다고 생각했다.@WebMvcTest(MessageController.class)class MessageControllerTest { @Autowired private MockMvc mockMvc; @MockBean private MessageService..
· 테스트
@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는 이러한 상황에서 사용하면 좋다.전체 애플리케이션 컨텍스트가 필요할 때통합 테스트를 하고 싶을 때 (모든 빈, 서비스, 컨트롤러 ..
찌땀
'테스트' 카테고리의 글 목록