분류 전체보기
JUnit5를 이용한 EntityManager로 QueryDSL 테스트해보기
JUnit5를 이용한 EntityManager로 QueryDSL 테스트해보기
2022.02.18QueryDSL을 공부해보면서 간단하게 프로젝트 구성해보고 QueryDSL 사용에 대한 간단한 테스트를 해보았습니다. JUnit을 이용한 QueryDSL 테스트를 진행해보았는데 테스트 진행을 위한 JUnit 환경 설정하는데에 꽤나 시간이 걸렸던 것 같습니다. Repository를 이용한 테스트가 아닌 EntityManager를 가져와서 QueryDSL에 대한 간단한 테스트를 해보려 합니다. EntityManager를 이용한 테스트를 위해서 JUnit 설정이 살짝 달랐는데요. 이에 대한 내용을 정리해보고자 합니다. 📌 1. 기본적인 프로젝트 구성 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' impl..
[Kotlin] Java 코드를 가져올 때 nullable 주의점
[Kotlin] Java 코드를 가져올 때 nullable 주의점
2022.02.16Java 코드로 작성된 클래스를 Kotlin으로 Converting하는 작업에서 중요한 부분이 전환하려는 클래스와 여러 형태로 연결된 기존 Java 클래스들을 고려해야 한다는 점입니다. 특히 Kotlin에서는 Java와 다르게 컴파일 단계에서 null 처리를 할 수 있다는 점입니다. 그래서 Kotlin 코드로 작성된 클래스에서 Java로 된 클래스를 사용할 때 Java 클래스를 신뢰해서는 안된다는 점이 중요합니다. 📌 1. Java 클래스를 인자로 받을 때 // Module: Java class fun processExample(module: Module) { // ... module.sendAnything(anything) // ... } 예를 들어 코틀린으로 이루어진 클래스에서 Java 코드로 된 클..
[JPA] 변경감지 개념과 @Transactional 위치에 따른 변경감지 사용
[JPA] 변경감지 개념과 @Transactional 위치에 따른 변경감지 사용
2022.02.15데이터 변경 로직에서 JPA 변경감지 기능을 자주 접할 수 있는데요. JPA 변경감지에 대해서 짤막한 정리와 함께 @Transactional과 같이 사용할 때 어떠한 점을 유의해야 되는지에 대해서 정리해보고자 합니다. 📌 데이터 변경을 위한 기본 로직 DB 테이블에 저장되어 있는 데이터의 정보를 수정하기 위해 update 하는 로직을 개발하고자 한다면 다음과 같은 논리적 절차를 거치게 될 것입니다. 트랜잭션 시작 변경하고자 하는 데이터의 id(주로 primary key)를 통한 where 조회 조회한 데이터에 수정할 내용들로 교체 update 처리 트랜잭션 커밋 물론 DB 콘솔 상에서는 변경할 데이터의 id를 가지고 있다면 update 쿼리하나로 바로 수정하면 됩니다. 하지만 어플리케이션단에서는 변경할 ..
git tag(태그) 기능 및 사용방법 정리
git tag(태그) 기능 및 사용방법 정리
2022.02.12git에 대한 기본 개념에 대해서 공부하면서 tag를 살펴보게 됐습니다. 실무에서는 주로 production 배포할 때 태그를 사용하게 됩니다. 실무에서 자주 사용되는 tag 기능과 사용법에 대해서 직접 테스트해보면서 정리한 내용을 남겨보고자 합니다. 📌 tag 개념 tag(태그)는 말 그대로 일종의 이정표를 남기는 것이라 할 수 있습니다. 커밋으로 움직이는 git 체계에서는 커밋자체에 이정표를 남길 수 있는데 이 때 tag를 사용합니다. git에서의 tag 개념은 다음과 같습니다. tag는 커밋을 참조하기 쉽도록 커밋에 이름을 붙이는 것 (commit ← tag를 붙이는 것) 특정 커밋에 한 번 붙인 tag는 고정 tag를 붙인 커밋에 새로운 커밋을 붙여도 tag는 이동하지 않습니다. Lightweig..
[JUnit] Test 환경과 Dev 환경 분리(profile 활용한 DB 환경 분리, JUnit5)
[JUnit] Test 환경과 Dev 환경 분리(profile 활용한 DB 환경 분리, JUnit5)
2022.01.28직전 글에서 단위, 통합테스트 한꺼번에 진행을 위한 구성에 대해서 다루었습니다. 글 작성하고 더 알아보니 잘못된 내용들이 조금 있었더라구요. 이번 글에서는 저번 글에서의 잘못된 내용을 수정하면서 Test 환경과 Dev 환경 분리에 대해서 한 번 정리해보려 합니다. 📌 테스트, 개발 환경 분리를 위한 DB 구성 dependencies { //... runtimeOnly 'mysql:mysql-connector-java' runtimeOnly 'com.h2database:h2' //... } 저는 테스트 환경과 개발 환경 분리를 위한 구성을 해보고자 각각의 환경에서 사용되는 DB를 다르게 설정하였습니다. 저번 글에서는 테스트, 개발 환경 모두 embedded DB(h2)를 사용하다 보니 혼용되어 사용되거나 ..
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
2022.01.25JPA 관련 테스트 어플리케이션을 개발하다가 JUnit을 사용하여 간단한 테스트 코드를 작성하게 되었습니다. 매번 어플리케이션 실행 후 Postman으로 api 확인하는 것도 귀찮더라구요. 개발 진행 후에 실제로 api가 잘 작동하는지 수시로, 빠르게 확인해보고자 JUnit을 도입하게 되었습니다. 여기서는 간단한 예시를 가지고 Controller 단의 단위테스트를 위한 구성과 Service에서 실제 DB까지 잘 적용이 되는지 확인해보고자 Service 단에서는 통합테스트로 구성하면서 겪은 내용들을 기록하고자 합니다. 📌 1. 기본적인 구성 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' impleme..