반응형 개발 이야기/Springboot26 Testcontainers로 테스트 코드 만들기 2(with Kotlin) 앞서 Java로 작성했던 Testcontainers로 테스트 코드 만들기를 Kotlin으로도 작성해봅시다. 이번에는 Mysql이 아닌 Redis를 사용한다고 가정합니다. 또한 Webflux 기반 테스트 환경 구축방법에 대해 포스팅합니다. 로컬환경은 아래와 같습니다. Windows 10 JDK 17 Kotlin 1.8 Springboot 3.1.4 Testcontainers 1.17.7 1. 의존성 추가 아래와 같이 build.gradle.kts에 의존성을 추가해줍니다. /* build.gradle.kts */ dependencies { ...(중략) testImplementation("io.mockk:mockk:1.10.4") testImplementation("org.junit.jupiter:junit.. 2024. 1. 18. Testcontainers로 테스트 코드 만들기 좋은 테스트 코드는 제품을 더욱 신뢰성 있고 견고하게 만듭니다. 주목할 점은 '좋은' 테스트 코드일 것입니다. 잘못 작성 된 테스트 코드는 되려 해로울 수 있습니다. '좋은' 테스트 코드는 일반적으로 아래와 같은 특징을 가집니다. 리팩터링 시, 테스트 코드는 수정되지 않음 버그 수정 시, 테스트 코드는 수정되지 않음 테스트 코드 내에 조건문, 순환문은 없음 메서드 보다는 행위를 테스트 딱히 실행할수 없는 상황이 아니라면 실제 의존성을 끊지 않도록 함 여기서 "딱히 실행할수 없는 상황이 아니라면 실제 의존성을 끊지 않도록 함"에 주목 해봅니다. 대부분 Springboot를 통해 Web Application 만들 때에는 데이터를 보관할 DB를 사용하게 될 것입니다. DB는 Web Application 입장에.. 2024. 1. 7. Springboot Application 로드 시 외부 파일 읽기 & 환경 설정 Springboot는 application.yml을 통해 환경 설정을 관리합니다. 아래와 같은 코드는 흔히 접할 수 있습니다. server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/testdb username: password: driver-class-name: com.mysql.cj.jdbc.Driver jpa: database: mysql database-platform: org.hibernate.dialect.MySQL5InnoDBDialect - src/resources/application.yml 만약 데이터베이스의 Username / Password를 소스코드 상에 입력하여 관리한다면 심각한 보안 문제를 야기합니다. 이.. 2024. 1. 7. Springboot에서 ResourceTransformer 적용하여 뷰 페이지 렌더링 Springboot로 모놀리틱한 서비스(프론트+백엔드)를 구성하려고 할때 아래와 같은 코드는 정석적인 방법은 아닐 것 입니다. 아마도 보통은 Thymeleaf와 같은 뷰 템플릿 엔진 기술을 사용할 것입니다. 다음에 소개할 내용은 JSP나 Thymeleaf 사용 없이 순수 html,js,css 등을 렌더링 할 때 직면하는 문제 중 하나를 다룹니다. Springboot로 정적 리소스를 렌더링 할 때 아래와 같이 WebMvc 관련 설정을 해주면 됩니다. @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry.. 2024. 1. 7. [Kotlin] Spring Batch를 사용한 배치 애플리케이션 작성 언젠가 한번은 만나게 될 Spring batch라고 생각했습니다. 그간 배치 기능은 Crontab + Nodejs 또는 CI/CD 도구 + Python Script로 작성 해왔었고, 레거시 시스템에서는 Spring에서 제공하는 Scheduler를 사용해 배치 기능을 개발 했었습니다. 최근 새로운 배치 애플리케이션을 만들 일이 생겨 스프링 배치를 학습하고, Kotlin + Spring batch 애플리케이션을 작성하는 방법에 대해서 정리합니다. 01. 기본 개념 Job: Spring batch의 가장 큰 작업의 단위이며, 실행의 단위가 됩니다. Step: Job안에 속하게 되는 작업으로 하나의 Job은 1개 이상의 Step으로 구성 될 수 있습니다. Tasklet: Step안에 속하는 작업입니다. 아래 그.. 2021. 4. 5. [Kotlin] Springboot, Mock을 활용한 유닛 테스트(feat. Method Stub) Springboot 기반의 애플리케이션을 개발할 때, 주로 JUnit으로 테스트 코드를 작성하게 될겁니다. (Springboot 2.2 버전 이후 부터는 JUnit 4가 아닌 5버전을 디폴트로 사용하게 됩니다.) 자바 개발자의 대다수가 JUnit을 사용해 테스트를 하기 때문에 기본적인 사용법에 대해선 너무나 잘 알려져 있기도 합니다. JUnit은 다음과 같은 Annotation을 제공합니다. @SpringBootTest : Spring이 기본적으로 사용하는 의존성 추가 해줌( + JUnit 5에서는 추가해주지 않아도 된다고하네요.) @Test : 테스트 메서드 수행 @BeforeAll : 각 테스트 메서드들 수행 전 실행 @Mock : 더미객체를 만듬 etc... 그리고 Assertion을 통해서 작성한.. 2021. 2. 27. [Kotlin] Springboot, AOP를 활용한 요청 데이터 조작(feat. Reflection) Kotlin + Springboot 환경에서 간단한 AOP를 만드는 방법을 공유합니다. AOP란 Aspect Oriented Programming의 약자로 직역하면 관점 지향 개발이라 합니다. 공통적인 기능들을 모듈화 해서 개발자가 적용하고 싶은 위치(메서드, 클래스 등)에 심을 수 있습니다. 이번 예제에서는 사용자로부터 요청된 전송데이터를 AOP를 통해 조작해보는 것을 해보려고합니다. 요청 데이터를 조작하는데에는 Reflection을 사용합니다. Reflection 이란 클래스 정보를 코드상에서 사용하는 기술로 개발자가 직접 class의 다양한 정보들(필드, 메서드, 어노테이션 등등)을 불러올수 있는 기술입니다. 주로 자바에서 코드를 조작하는 방법으로 많이 언급 되는데 당연히 코틀린에서도 가능합니다. .. 2021. 2. 9. [Kotlin] Springboot + WebSocket 사용법 Kotlin + Springboot 환경에서 WebSocket(웹소켓)을 사용하기 위한 방법을 기술합니다. 간단한 채팅앱을 만들어 보며 WebSocket 설정과 사용법을 알아보겠습니다. (백엔드. 즉, Kotlin + Springboot + Gradle 환경 구성에 대한 내용만을 다루었습니다.) 01. 모듈 생성/다운로드 https://start.spring.io/를 통해 Springboot를 위한 모듈을 생성해봅니다. 위와 같이 설정 체크 해주고 GENERATE 클릭 해서 zip파일을 다운 받습니다. 다운받은 zip파일 압축 해제 하고, IDE에서 해당 프로젝트를 추가해봅시다. 그리고 build.gradle.kt 파일을 열어보면 아래와 같습니다. plugins { id("org.springframewo.. 2020. 6. 7. [Kotlin] Springboot + Redis 사용법 Redis는 메모리 DB로 일반적인 DB(disk를 사용)보다 속도가 빠릅니다. 그렇기 때문에 대량의 데이터를 다루는 서비스에서 캐시 서버로서 많이 사용됩니다. 해당 글에서는 코틀린을 사용해 Springboot + Redis 연동 및 간단한 사용방법을 정리합니다. 01. Dependency 추가 build.gradle.kt 파일을 열어 아래와 같이 Redis 사용을 위한 lib를 추가해줍시다. ...(중략) repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-s.. 2020. 4. 26. [Kotlin] Springboot + Mybatis 사용법 ORM 기술인 JPA를 사용해서 DB 데이터 조작, 조회를 하면 편하지만 때론 SQL만으로 쿼리를 짜서 조회할 상황도 있을 것이라 생각됩니다. MySQP + JPA 셋팅 방법은 여기 있습니다. https://basketdeveloper.tistory.com/74 [Kotlin] Spring boot에서 MySQL + JPA 사용법 지난번 Springboot + gradle 설정(https://basketdeveloper.tistory.com/73)에 이어 Spring boot에서 DB(Mysql) 간단 연동법과 JPA를 사용하는 방법을 정리해봅니다. 01. build.gradle.kt 에 Dependency 추가 impo.. basketdeveloper.tistory.com 이번에는 Kotlin +Spr.. 2020. 3. 28. [Kotlin] Springboot에서 MySQL + JPA 사용법 지난번 Springboot + gradle 설정(https://basketdeveloper.tistory.com/73)에 이어 Spring boot에서 DB(Mysql) 간단 연동법과 JPA를 사용하는 방법을 정리해봅니다. 01. build.gradle.kt 에 Dependency 추가 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.springframework.boot.gradle.tasks.run.BootRun plugins { id("org.springframework.boot") version "2.2.4.RELEASE" id("io.spring.dependency-management") version "1.0.9.RELEASE.. 2020. 2. 23. [Kotlin] Springboot + Gradle 시작하기 최근 회사에서 Kotlin으로 개발을 하게 되어 새로운 언어를 공부해야 됬는데요... 코틀린(Kotlin)은 이전까지 안드로이드 개발. 즉, 앱개발 할 때 사용되는 언어라 생각했습니다. 2017년 구글에서 안드로이드 개발언어로 코틀린을 정식으로 채택하고, 앱 개발 관련 공식문서들도 코틀린을 예제로 작성되는 등을 미뤄볼 때, 모바일 앱 개발자는 무조건 해야겠구나 생각했습니다. 하지만!!! 요즘은 Kotlin으로 서버 개발을 하는 회사도 있다고 하네요. Kotlin도 Java와 같이 JVM에서 돌아가기 때문에 Java랑 완벽히 호환이 되고, 최근 Typescript 같은 인기 많은 언어처럼 Null Safety, 함수형과 같은 특징을 가지고 있어 서버개발에 채택되는 경우가 점점 많아지는 추세라고 합니다. 기.. 2020. 2. 22. 이전 1 2 3 다음 반응형