본문 바로가기

Back-End173

[Spring Boot] JUnit으로 단위 테스트(Unit Test) 코드 작성하기 📗: 인터페이스, 📄: 클래스 helper ㄴ 📗 ControllerTestHelper : HttpMethod에 따라 요청 메서드 생성, URI 반환 ㄴ 📗 MemberControllerTestHelper : Member 컨트롤러에 대한 URI를 호출할 수 있도록 연결 ㄴ 📄 StubData : Map으로 HttpMethod에 따라 Dto 객체를 생성하여 반환 controllerTest ㄴ 📄 MemberControllerTest : helper를 활용하여 테스트 수행 단위 테스트 코드를 작성할 때 아래 두 가지의 라이브러리가 사용된다. JUnit5: 자바 단위 테스트를 위한 테스팅 프레임워크 AssertJ: 자바 테스트를 돕기 위해 다양한 문법을 지원하는 라이브러리 단위 테스트는 given - when.. 2022. 9. 18.
Spring Boot에서 메일 발송하기(Google SMTP) 회원가입을 하면 이메일로 회원가입 성공 메시지를 전송할 수 있다! 전체 로직: 클라이언트 > Controller Post 요청 > Service의 회원가입 로직 > Event 발행 > Email 전송 로직 실행 0. Google 앱 비밀번호 발급 Google 계정 관리 > 2단계 인증 활성화 > 앱 비밀번호 > 메일, Windows 컴퓨터로 지정하고 발급 1. 의존성 추가 //build.gradle implementation 'org.springframework.boot:spring-boot-starter-mail' 2. Gmail SMTP 설정 추가 //application-local.yml mail: smtp: host: smtp.gmail.com port: 587 username: ${EMAIL_U.. 2022. 9. 17.
애플리케이션 빌드 / 실행 / 배포 애플리케이션을 서버 환경에서 실행하려면 Gradle이나 Maven 같은 빌드 툴로 빌드하는 과정이 필요하다. 빌드 🌳 IntelliJ IDE Gradle 탭 > 프로젝트 이름 > Tasks > build > :bootJar 또는 :build task build/libs 디렉토리에 Jar 파일(로컬 PC에서 실행 가능한 파일)이 생성된다. :build : :assemble, :check 같이 Gradle에서 빌드와 관련된 모든 task를 실행한다. 실행 가능한 Jar 파일 외에 plain Jar 파일이 하나 더 생성된다. :bootJar : 모든 task를 실행하는 것이 아니라 실행 가능한 Jar 파일을 생성하기 위한 task만 실행된다. 🌳 Gradle Task Window 터미널 PS D:project.. 2022. 9. 16.
[JPA] 연관관계 매핑 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 객체와 테이블 연관 관계의 차이 객체의 참조와 테이블의 외래키 매핑 방향, 다중성, 연관관계의 주인 객체를 테이블에 맞춰서 모델링 하면 협력 관계를 만들 수 없다. 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾지만, 객체는 참조를 사용해서 연관된 객체를 찾기 때문이다. 아래와 같이 외래키의 식별자를 직접 다루게 된다. member1이 속한 팀을 알고 싶을 때에도 member1의 teamId를 통해 team 객체를 찾아야 하는 과정이 계속 생긴다. 객체 지향적이지 않다. // 팀 저장 Team team = new Team(); team.setName("TeamA"); em.persist(team).. 2022. 9. 10.
[Spring Boot] JUnit을 이용하여 테스트 코드 작성하기 (feat. Mockito) 단위 테스트(Unit Test): 비즈니스 로직에서 사용하는 각각의 메서드를 독립적으로 테스트한다. 슬라이스 테스트: 애플리케이션을 특정 계층으로 쪼개어 하는 테스트로, Mock 객체를 사용한다. 통합 테스트: 클라이언트 툴 없이 개발자가 짜 놓은 테스트 코드를 실행시켜서 기대 결과를 확인한다. Controller의 API를 호출하면 서비스 계층과 데이터 액세스 계층을 거쳐 기대 결과를 확인한다. 기능 테스트: 사용자 입장에서 애플리케이션의 기능이 올바르게 동작하는지 테스트한다. 일반적으로 테스트 전문 부서에서 진행하며, API 툴이나 데이터베이스까지 연관되어 있다. 🌳 F.I.R.S.T 원칙 Fast: 테스트 케이스는 빨라야 한다. ※ 테스트 케이스: 테스트를 위한 입력 데이터, 실행 조건, 기대 결과.. 2022. 9. 7.
ApplicationEventPublisher: How to use events in Spring | @Async ApplicationEventPublisher는 ApplicationContext가 상속받는 인터페이스(기능) 중 하나이다. 이벤트란? 회원 가입을 하면 이메일을 전송하는 서비스가 있다고 가정하자. 핵심 로직은 회원 가입 서비스이고, 이메일 전송은 부가적인 이벤트라고 볼 수 있다. 하나의 서비스에 여러 로직이 섞여 있으면 유지보수가 어렵고 코드가 복잡해진다. 이메일 전송 중에 문제가 생긴다면? 여러 로직이 존재할 때 이 모든 로직을 롤백 하는 것은 비효율적이다. Service 클래스에는 회원 가입 로직만 남기고 이메일 전송 로직은 개별 이벤트로 처리할 수 있다! 로직 사이에 이벤트 Publisher 배치 → 이벤트를 던진다! → 리스너가 이를 캐치해서 이벤트 로직 실행 🌿 이벤트 클래스 생성하기 이 클래.. 2022. 9. 5.