반응형 전체 글390 [Spring] Kotest 병렬 테스트 설정 방법 이번 포스팅에선 Kotest로 작성한 테스트를 병렬로 실행하는 방법에 대해 알아보겠다. Kotest 병렬 테스트 설정 방법 AbstractProjectConfig를 상속받은 클래스를 만든 후 parallelism level을 설정해서 테스트를 몇 개씩 동시에 실행할 건지 설정할 수 있다. class KotestProjectConfig : AbstractProjectConfig() { override val parallelism = 3 } 병렬로 실행되는 단위는 Spec 단위다. 병렬로 실행한다고 해서 @SpringBootTest, @DataJpaTest 테스트를 돌릴 때 애플리케이션이 테스트마다 올라가지 않으니 걱정 안 해도 된다. 병렬 테스트 예제 먼저 parallelism 설정을 하지 말고, 아래와 .. 2023. 12. 31. [Spring] Gradle Test events were not received 해결 방법 문제 SpringBoot 테스트하려고 gradle test를 돌렸는데 Test events were not received라고 나오고 테스트가 돌아가지 않는다. 분명히 잘 돌아갔었는데 갑자기 왜 이러지.. 원인 테스트를 수정한 후 돌리면 잘 돌아가길래 안 돌아가는 테스트랑 로그를 비교해봤더니, test UP-TO-DATE 만 달랐다. 그렇다. 테스트 성공 후 변경 사항 없이 다시 돌리면 돌아가지 않는다. 실패한 경우엔 돌아감. 해결책 X. 구글링을 해보니 대부분 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle에서 Run tests using을 IntelliJ IDEA로 변경하라고 나와있는데 이상하게 해결되지 않았다. O. 그래서 tes.. 2023. 12. 28. [Spring] Kotest와 Mockk를 사용할 때 주의할 점 이번 포스팅에선 Kotest와 Mockk를 같이 사용할 때 주의할 점에 대해 알아보겠다. 아래 테스트를 돌리면 어떻게 될까? 성공할까? 실패할까? Kotest의 Isolation Mode를 공부했다면 당연히 답할 수 있는 문제다. class UserServiceTest : DescribeSpec({ describe("getUser") { val userService = mockk() context("유저가 있는 경우") { every { userService.getUser(any()) } returns User(1, "노력남자") it("User를 리턴한다.") { userService.getUser(1) shouldBe User(1, "노력남자") verify(exactly = 1) { userServ.. 2023. 12. 26. [Spring] Kotest DescribeSpec, BehaviorSpec에서 Isolation Mode에 따른 동작 방법 알아보기 이번 포스팅에선 Kotest의 DescribeSpec, BehaviorSpec에서 isolation mode에 따라 어떻게 동작하는지 알아보려고 한다. 아래 설명은 DescribeSpec 기준으로 하려고 한다. BehaviorSpec이 궁금하면 describe = given, context = when, it = then으로 생각하며 보면된다. Isolation Mode란? Kotest의 Isolation Mode는 테스트 간 변수, 테스트 객체, 목 객체 등을 어떤 단위로 공유할지에 대한 전략이다. Isolation Mode에 따라 생성되는 테스트 단위를 인스턴스라고 한다. 공식 홈페이지에서는 Isolation Mode에 따라 새로운 스펙(Spec)이 생성된다고 말을 한다. SingleInstance,.. 2023. 12. 25. [Spring] Kotest context, when 단위로 @Transactional 동작하게 하는 방법 이번 포스팅에선 Kotest에서 DescribeSpec의 context, BehaviorSpec의 when 단위로 @Transactional 동작하게 하는 방법에 대해 알아보겠다. 이전 포스팅에서 Kotest로 작성된 테스트에서 @Transactional 동작하게 하는 방법에 대해 알아봤는데 context, when 단위로 동작하는 방법은 없었다. (아래 글은 DescribeSpec의 context 기준으로 작성됐는데, BehaviorSpec을 사용하는 경우 context를 when로만 바꿔주면 된다.) 왜 없을까? 없어서 불편하다라고 생각만 했지, 별로 왜 없는지 생각을 해보진 않았는데 팀원분이 말해주신 이유는 아래와 같다. context 단위로 트랜잭션을 묶어주는 경우 트랜잭션 범위를 지정하는 방법이.. 2023. 12. 11. [Spring] Kotest에서 @Transactional을 사용하는 방법 이번 포스팅에선 Kotest로 작성된 테스트 코드에서 @Transactional을 사용하는 방법에 대해 알아보겠다. @Transactional을 선언해보자 아래 테스트 코드는 Kotest의 DescribeSpec으로 작성된 코드다. @Transactional을 붙여보겠다. @Transactional @SpringBootTest class UserRepositoryTest( private val userRepository: UserRepository ) : DescribeSpec({ describe("save") { context("User를 저장하면") { userRepository.save(User(name = "노력남자")) it("정상적으로 저장된다.") { userRepository.findAll.. 2023. 12. 10. [Spring] Exceeded limit on max bytes to buffer : 262144 해결책 문제 WebClient로 api 호출하는데 간헐적으로 "org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144"가 발생했다. 참고, webflux나 netty를 사용 중이면 아래 에러가 추가로 발생한다. io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 에러 로그 - Error was received while reading the incoming data. The connection will be closed. io.netty.util.IllegalReferenceCountException: .. 2023. 12. 3. [Spring] Cannot inline bytecode built with JVM target 17 into bytecode that is being built with JVM target 1.8. 해결책 문제 새로운 Spring Boot 프로젝트를 만들고 실행하려고 보니 runApplication에 빨간 줄이 있어서 마우스를 올려보니 "Cannot inline bytecode built with JVM target 17 into bytecode that is being built with JVM target 1.8. Please specify proper '-jvm-target' option" 라고 나왔다. 원인 gradle에 Java 버전을 21로 다 세팅해놨다. 찾아보니 IntelliJ는 2023.3 버전부터 Java 21을 지원한다. 내 IntelliJ 버전을 확인해보니 2023.1.5다. 그렇다. 21을 지원하지 않아서 저렇게 세팅해놔도 내 프로젝트는 1.8버전으로 세팅이 된다. 아오. 해결책 1.. 2023. 11. 27. [Spring] Some Kotlin runtime libraries has an unsupported binary format 해결책 문제 집에서 테스트할 땐 Spring, Kotlin 등 호환이 된다면 항상 최신 버전을 사용하고 있다. IntelliJ로 Spring Boot 프로젝트 만들고 신나게 코드 작성하려고 보니 갑자기 뜬금없이 "Some Kotlin runtime libraries has an unsupported binary format"이라는 에러가 상단에 나왔다. Downgrade all Kotlin runtime libraries를 클릭해봤더니 뭐지 이거... 무슨 프로젝트 만들기만 했는데 이런 해결도 안 되는 에러가 발생했지..? 원인 gradle 버전 호환이 안 되는 건가.. 뭐지 계속 찾다가 Kotlin 공식 홈페이지 접속해서 버전 별 소개 글 보다가 IDE support 보니까 kotlin 1.9.20은 2023.. 2023. 11. 26. 이전 1 ··· 3 4 5 6 7 8 9 ··· 44 다음 반응형