반응형 분류 전체보기158 Junit5(jupiter) 테스트코드 작성법(@SpringBootTest) 이번게시글에서는 @SpringBootTest 어노테이션을 활용한 통합테스트(상태기반 테스트) 방법을 알아보겠습니다. 어플리케이션의 모든 Bean을 로드하기에 실제 운영환경과 비슷한 환경이라는 장점이 있지만 시간, 비용의 Cost가 크다는 단점이 있습니다. @SpringBootTest를 사용한 플로우검증을 할때는 MockBean을 사용하기 보다는 실제 DB까지 확인하는 경우가 많습니다.(상태기반 테스트) @MockBean이나 @Mock 어노테이션은 @SpringBootTest보다는 @WebMvcTest를 사용하거나 Mock객체를 활용하여 직접 DI 하는 경우에 사용하는것이 좋습니다.(가짜객체를 사용할꺼라면 @SpringBootTest 어노테이션을 사용하여 모든 환경을 잡는것은 시간적 비용이 너무 큽니다.).. 2021. 3. 14. Junit5(Juptier) Service 테스트코드 작성법(Mock, MockBean 차이점 확인) 서비스코드 테스트작성법과 Mock, MockBean의 차이를 정리합니다. Mock vs MockBean 공통점 둘다 가짜객체이며 테스트스텁의 한 종류입니다. given, when. verify 등을 사용하여 행위를 테스트합니다. 차이점 MockBean은 가짜 Bean을 스프링에 등록해달라는 의미입니다. 스프링 컨테이너가 기존에 갖고있는 Bean객체는 MockBean객체로 치환되어 DI에 사용됩니다. Mock은 가짜객체를 만드는데 스프링빈에 등록이 안되는 객체입니다. 스프링 컨테이너가 DI를 하는 방식이 아니라 객체생성시 생성자에 Mock객체를 직접 주입해줍니다. 생성자 주입을 사용해야 편하게 사용 가능합니다 스프링을 띄우지 않으므로 MockBean을 사용할때보다 빠릅니다. 1. pom.xml org.sp.. 2021. 3. 13. Junit5(jupiter) Controller 테스트코드 작성법 (WebMvcTest, MockMvc, MockBean을 사용한 테스트) Mock객체를 통한 행위기반 컨트롤러 테스트코드 작성법에 대해서 알아보겠습니다. 1. Mock 객체란? 실제 객체를 만들어 사용하기에 시간, 비용 등의 Cost가 높은경우 사용 가짜객체를 만들어 가짜객체가 원하는행위를 하도록 정의하고(가짜객체를 DI) 타 컴포넌트에 의존하지 않는 순수한 나의 코드만 테스트하기 위해서 사용 2. 컨트롤러에서 테스트코드 작성방법 MockMvc를 통해 api를 호출하며 해당컨트롤러에서 의존하고 있는 객체를 Mock객체로 만들어 주입해줍니다.(@MockBean 어노테이션 사용) Mock 객체는 가짜객체이므로 리턴되는값이 없습니다. 따라서 given, when 등으로 원하는 값을 리턴 하도록 미리 정의해줍니다. 로직이 진행된후 해당 행위가 진행됐는지 verify를 통해 검증해줍니.. 2021. 3. 13. [java] Jsonparser, Gson 사용법 및 예제 이번 게시글에서는 Gson과 JsonParser를 정리해보겠습니다. pom.xml에 gson의존성을 추가해줍니다. com.google.code.gson gson 2.8.6 1. json문자열을 객체에 할당하기 @Getter @Setter public class Member { private String name; private String age; } Member클래스를 만들어줍니다. @Test void test() { // {"name":"John", "age":"20"} String jsonData = "{\"name\":\"John\", \"age\":\"20\"}"; Gson gson = new Gson(); MemberDto member = gson.fromJson(jsonData, Member.. 2021. 3. 5. [spring] spring과 객체지향의 원리 spring을 통해 객체지향의 원리를 활용하는 기본 예제입니다. 동작원리와 이유를 생각해보지않고 @Service @Repository @Component @Autowired 등의 어노테이션을 사용하였지만 의미를 확인하기 위해 정리하였습니다. public interface Animal { void eat(); } public class Tiger implements Animal{ @Override public void eat() { System.out.println("고기를 먹습니다."); } } public class AnimalManager { private Animal animal = new Tiger(); public void exacute() { animal.eat(); } } AnimalMana.. 2021. 2. 28. [spring] 객체지향 설계의 5가지 원칙 with spring (SOLID) 객체지향 설계의 5대 원칙이란 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)을 칭하며 각각의 앞자를 따서 SOILD 원칙이라고 부릅니다. 1. SRP 단일 책임 원칙(single responsibility principle) 하나의 클래스는 하나의 책임만 가져야 한다. 변경이 있을때 파급효과가 적으면 다일책임 원칙을 잘 따른것이다.(ex 객체의 생성과 사용을 분리) 응집도가 높고 결합도가 낮게 설계하라는 기본 원칙이다. 스프링에서는 객체의 생성을 IOC 컨테이너에서 주입받아 사용하여 구현객체를 생성하는 책임을 IOC 컨테이너에게 위임한다. 2. OCP 개방-폐쇄 원칙(Open/closed principle) 소.. 2021. 2. 22. [개발상식] HTTP란 1. HTTP란? HTTP란 HyperText Transfer Protocol의 약자로 html파일을 전송하기 위해 만들어진 프로토콜입니다. 기본 목적은 osi7계층의 가장 위의 계층인 응용계층에서 단순히 html파일을 전송하기 위한 프로토콜이었지만, 지금은 이미지, 영상, 음성, JSON, XML 등 모든 것을 전송하는데 사용하고 있습니다. 2. HTTP의 버전 (1) HTTP/1.1 1997년에 등장하였습니다. 2014년까지 계속 최신버전으로 유지되었으며 가장 보편화된 버전입니다. (2) HTTP/2 2015년에 등장하여 성능이 개선되었습니다. (3) HTTP/3 전송계층에서 TCP 대신 UDP를 사용하는 방식으로 진화한 버전입니다. 그동안은 신뢰성이 중요시하여 TCP를 사용하였지만 HTTP3 버전부.. 2021. 1. 21. [개발상식] URI URL 차이점 이번 게시글에서는 URL과 URI의 차이를 간단하게 정리합니다. 1. URI(Uniform Resource Identifier) 소스를 식별하기 위해 통합된 방식으로 URI로 식별 할 수 있는 모든 정보를 말합니다. URI는 URN과 URL을 포함하는 단어로 URL은 URI 안에 있는 정보입니다. 2. URN(Uniform Resource Name) URL의 이름을 부여 한 것입니다. 위치(URL)는 변할 수 있지만 URN는 변하지 않는다는 특징으로 URI에 포함되는 하나의 식별자입니다. 2. URL(Uniform Resource Locator) 리소스가 있는 위치를 말하며 웹브라우저에 입력하면 리소스를 내려받을 수 있습니다. 프로토콜://host:port 가 기본 형식이며 '/'로 path를 ?로 qu.. 2021. 1. 21. [Jacoco] Jacoco 사용법 및 예제(maven) 이번 게시글에서는 jacoco 사용법에 대해서 알아보겠습니다. 1. Jacoco란? Java code coverage의 약자로 junit 테스트의 결과를 바탕으로 커버리지를 결과를 리포트 해주는 툴 입니다. 특히 코드정적분석도구인 sonarqube와 연계하여 사용하는 경우가 많습니다. 2. Pom.xml org.jacoco jacoco-maven-plugin 0.8.2 prepare-agent report test report jacoco 플러그인을 추가해 줍니다. 2. JacocoController.java 작성 package com.example.jacocotest; import org.springframework.web.bind.annotation.GetMapping; import org.sprin.. 2021. 1. 20. 이전 1 ··· 10 11 12 13 14 15 16 ··· 18 다음 반응형