본문 바로가기
반응형

Spring16

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.
[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.
[Spring] 스프링 빈(Bean)이란? 1. 스프링 빈(Bean)이란? 스프링의 진입점(main문)을 먼저 확인해 보겠습니다. @SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } } 스프링도 static한 메인문이 있고 이를 시작점으로 스프링이 시작 됩니다. 이제 http 메서드로 Controller의 메서드를 호출하면 컨트롤러를 타고 웹 서버의 로직이 진행 됩니다. 그런데 나는 new를 사용하여 컨트롤러를 생성해 준 적도 없고 해당 메인문은 깨끗하기만 한데 컨트롤러는 누가 만들어준걸까? 라는 의문점이 생깁니다. 2. 범인은 컴포넌.. 2021. 1. 14.
[Spring] 스프링 IOC(Inversion of Control)와 DI(Dependency Injection) 1. IOC컨테이너란? 스프링 IOC 컨테이너란 컴포넌트 스캐닝된 Bean 객체를 생성해주고, 관리해 주는 곳 입니다. Bean과 컴포넌트 스캐닝이란? frozenpond.tistory.com/71 [Spring] 스프링 빈(Bean)이란? 1. 스프링 빈(Bean)이란? 스프링의 진입점을 먼저 확인해보자. @SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class,.. frozenpond.tistory.com 2. IOC란? IOC란 Inversion of Control의 약자로 제어의 역전을 말합니다. 제어권을 개.. 2021. 1. 14.
반응형