tools & libs/단위테스트(junit, spock)
-
이번 포스트에서는 Rest Client에 대한 Slide 테스트를 위한 @RestClientTest를 사용해보자. Rest Client Test @RestClientTest Rest Client는 통상 서비스에 작성하며 원격지에서 제공하는 REST API를 사용하는 클라이언트이 @RestClientTest는 이를 테스트하기 위한 slice test 도구이다. @Target(ElementType.TYPE) @BootstrapWith(RestClientTestContextBootstrapper.class) @ExtendWith(SpringExtension.class) @OverrideAutoConfiguration(enabled = false) @TypeExcludeFilters(RestClientType..
[spring test] 8. Rest Client Test이번 포스트에서는 Rest Client에 대한 Slide 테스트를 위한 @RestClientTest를 사용해보자. Rest Client Test @RestClientTest Rest Client는 통상 서비스에 작성하며 원격지에서 제공하는 REST API를 사용하는 클라이언트이 @RestClientTest는 이를 테스트하기 위한 slice test 도구이다. @Target(ElementType.TYPE) @BootstrapWith(RestClientTestContextBootstrapper.class) @ExtendWith(SpringExtension.class) @OverrideAutoConfiguration(enabled = false) @TypeExcludeFilters(RestClientType..
2023.11.28 -
이번 포스트에서는 @RestController에 대한 단위테스트에 대해서 살펴보자. REST를 위한 단위 테스트 rest 동작을 확인하기 위해서는 두 가지 형태로 살펴볼 수 있다. 일단 일반적인 호출이 되는가에 대한 것은 앞서 살펴봤던 Controller Test와 유사하다. 추가로 생각할 만한 것은 응답의 타입에 대한 정도이다. andExpect(content().contentType(MediaType.APPLICATION_JSON)) 하지만 REST는 model이나 session에 데이터를 담지 않기 때문에 어떤 정보가 전달되었는지 즉 내용을 확인하기 위한 방법이 필요하다. 이를 위해 RestController의 단위 테스트에는 com.jayway.jsonpath가 주로 사용된다. 관련 문서는 htt..
[spring test] 7. @RestController Test이번 포스트에서는 @RestController에 대한 단위테스트에 대해서 살펴보자. REST를 위한 단위 테스트 rest 동작을 확인하기 위해서는 두 가지 형태로 살펴볼 수 있다. 일단 일반적인 호출이 되는가에 대한 것은 앞서 살펴봤던 Controller Test와 유사하다. 추가로 생각할 만한 것은 응답의 타입에 대한 정도이다. andExpect(content().contentType(MediaType.APPLICATION_JSON)) 하지만 REST는 model이나 session에 데이터를 담지 않기 때문에 어떤 정보가 전달되었는지 즉 내용을 확인하기 위한 방법이 필요하다. 이를 위해 RestController의 단위 테스트에는 com.jayway.jsonpath가 주로 사용된다. 관련 문서는 htt..
2023.11.28 -
이번 포스트에서는 Junit과 MockMvc를 이용해서 file upload를 테스트하는 방법에 대해서 살펴보자. file upload test multipart() get방식 또는 post 방식의 request를 생성하기 위해서 MockMvcResultBuilders의 get(), post() 메서드를 사용했다면 file upload를 위해서는 multipart()를 사용한다. multipart()의 반환타입은 MockMultipartHttpServletRequestBuilder 인데 이를 이용해서 file을 등록할 수 있다. 그래도 업로드할 파일은 필요한데 이때는 MockMultipartFile 클래스를 이용한다. 나머지 설정(파라미터, 쿠키 등)은 일반적인 테스트와 동일하다. @Controller ..
[spring test] 6. @Controller Test 3 - File upload test이번 포스트에서는 Junit과 MockMvc를 이용해서 file upload를 테스트하는 방법에 대해서 살펴보자. file upload test multipart() get방식 또는 post 방식의 request를 생성하기 위해서 MockMvcResultBuilders의 get(), post() 메서드를 사용했다면 file upload를 위해서는 multipart()를 사용한다. multipart()의 반환타입은 MockMultipartHttpServletRequestBuilder 인데 이를 이용해서 file을 등록할 수 있다. 그래도 업로드할 파일은 필요한데 이때는 MockMultipartFile 클래스를 이용한다. 나머지 설정(파라미터, 쿠키 등)은 일반적인 테스트와 동일하다. @Controller ..
2023.11.27 -
이번 포스트에서는 @Controller에 대한 다양한 테스트 예를 살펴보자.@Controller에 대한 다양한 단위테스트 처리해보기먼저 테스트 대상인 @Controller와 테스트를 구성해보자.@Controllerpublic class MainController { @GetMapping("/") public String index() {... } @GetMapping("/redirect") public String redirect(RedirectAttributes redirAttr) {... } @GetMapping("/add") public String add(@RequestParam double a, @RequestParam double b, @CookieValue(required ..
[spring test] 5. @Controller Test 2이번 포스트에서는 @Controller에 대한 다양한 테스트 예를 살펴보자.@Controller에 대한 다양한 단위테스트 처리해보기먼저 테스트 대상인 @Controller와 테스트를 구성해보자.@Controllerpublic class MainController { @GetMapping("/") public String index() {... } @GetMapping("/redirect") public String redirect(RedirectAttributes redirAttr) {... } @GetMapping("/add") public String add(@RequestParam double a, @RequestParam double b, @CookieValue(required ..
2023.11.27 -
이번 포스트에서는 Spring @MVC의 Controller를 테스트하는 방법에 대해서 알아보자. MockMvc 설정 MockMvc?Controller를 만들고 잘 동작하는지 확인하기 위해서 매번 스프링 애플리케이션을 실행하고 브라우저를 통해서 동작을 확인하는데는 매우 손이 많이 간다. 이 상황에서 파라미터의 전달, attribute, 화면 이동 등을 검증하는 일은 쉬운 일이 아니다. 또한 웹이 제대로 동작하는지 확인하기 위해서는 브라우저나 WAS처럼 우리가 프로그래밍하지 않은 요소가 개입된다. 따라서 Controller의 단위 테스트를 위해서는 MockMvc이라는 객체가 사용된다. MockMvc는 앞서 살펴봤던 @Mock 처럼 가짜로 테스트를 위해 브라우저나 WAS의 동작을 똑같이 처리해줄 수 있는 ..
[spring test] 4. @Controller Test 1이번 포스트에서는 Spring @MVC의 Controller를 테스트하는 방법에 대해서 알아보자. MockMvc 설정 MockMvc?Controller를 만들고 잘 동작하는지 확인하기 위해서 매번 스프링 애플리케이션을 실행하고 브라우저를 통해서 동작을 확인하는데는 매우 손이 많이 간다. 이 상황에서 파라미터의 전달, attribute, 화면 이동 등을 검증하는 일은 쉬운 일이 아니다. 또한 웹이 제대로 동작하는지 확인하기 위해서는 브라우저나 WAS처럼 우리가 프로그래밍하지 않은 요소가 개입된다. 따라서 Controller의 단위 테스트를 위해서는 MockMvc이라는 객체가 사용된다. MockMvc는 앞서 살펴봤던 @Mock 처럼 가짜로 테스트를 위해 브라우저나 WAS의 동작을 똑같이 처리해줄 수 있는 ..
2023.11.27 -
이번에는 service 영역에 대한 테스트를 처리해보자. @Service Layer Test @Service Layer@Service Layer는 통상 @Repository에 의존한다. 즉 @Repository가 없으면 컴파일조차 할 수가 없다.@Service@RequiredArgsConstructorpublic class BoardService { private final BoardRepository repo; public Board write(Board board) { return repo.save(board); } public Optional select(long boardNo) { return repo.findById(boardNo); }} 하..
[spring test] 3. @Service Layer test이번에는 service 영역에 대한 테스트를 처리해보자. @Service Layer Test @Service Layer@Service Layer는 통상 @Repository에 의존한다. 즉 @Repository가 없으면 컴파일조차 할 수가 없다.@Service@RequiredArgsConstructorpublic class BoardService { private final BoardRepository repo; public Board write(Board board) { return repo.save(board); } public Optional select(long boardNo) { return repo.findById(boardNo); }} 하..
2023.11.27 -
이번 포스트에서는 Spring Data Jpa에 대한 테스트를 위한 @DataJpaTest 사용법에 대해 알아보자. @DataJpaTest 애너테이션 분석@DataJpaTest는 Spring Data Jpa 테스트를 위한 slice test 애너테이션이다. @DataJpaTest는 database 및 jpa와 관련된 다양한 자동 설정을 로딩한다.@Target(ElementType.TYPE)@BootstrapWith(DataJpaTestContextBootstrapper.class)@ExtendWith(SpringExtension.class)@OverrideAutoConfiguration(enabled = false)@TypeExcludeFilters(DataJpaTypeExcludeFilter.cl..
[spring test] 2. Spring Data Jpa Test이번 포스트에서는 Spring Data Jpa에 대한 테스트를 위한 @DataJpaTest 사용법에 대해 알아보자. @DataJpaTest 애너테이션 분석@DataJpaTest는 Spring Data Jpa 테스트를 위한 slice test 애너테이션이다. @DataJpaTest는 database 및 jpa와 관련된 다양한 자동 설정을 로딩한다.@Target(ElementType.TYPE)@BootstrapWith(DataJpaTestContextBootstrapper.class)@ExtendWith(SpringExtension.class)@OverrideAutoConfiguration(enabled = false)@TypeExcludeFilters(DataJpaTypeExcludeFilter.cl..
2023.11.27 -
최근에 Java를 이용한 웹 애플리케이션 프로젝트를 진행할 때는 Spring을 때 놓고 생각할 수 없다. JUnit에서는 Extension Model을 이용해서 다른 시스템과의 연결이 가능한데 연동이 되어야 Spring Framework와 소통하며 @Autowired등을 통해 빈을 사용할 수 있다.이번 포스트에서는 Spring Framework와 JUnit을 연동하는 방법에 대해 살펴보자. Spring Legacy Project와의 연동먼저 spring legacy project에서의 설정 방법을 살펴보자.의존성 설정먼저 spring-test에 대한 의존성과 junit 이 필요하다. org.springframework spring-test 5.3.18 test org.junit.jupiter jun..
[spring test] 1. spring과 junit최근에 Java를 이용한 웹 애플리케이션 프로젝트를 진행할 때는 Spring을 때 놓고 생각할 수 없다. JUnit에서는 Extension Model을 이용해서 다른 시스템과의 연결이 가능한데 연동이 되어야 Spring Framework와 소통하며 @Autowired등을 통해 빈을 사용할 수 있다.이번 포스트에서는 Spring Framework와 JUnit을 연동하는 방법에 대해 살펴보자. Spring Legacy Project와의 연동먼저 spring legacy project에서의 설정 방법을 살펴보자.의존성 설정먼저 spring-test에 대한 의존성과 junit 이 필요하다. org.springframework spring-test 5.3.18 test org.junit.jupiter jun..
2023.11.23