전체 글

코딩하는 대학생에서 개발자까지
내가 JUnit5에 병렬화를 도입한 이야기 - 클래스 단위
·Backend
안녕하세요, Junit-team/junit5, spring/spring-boot, apache/seata, naver/fixture-monkey 등 여러 오픈소스 프로젝트에 기여한 YongGoose입니다.찾아보니 JUnit5에는 전 세계에서 35번째로 많이 기여를 했더라고요.Commit 순이 아닌, Additions 순으로 하면 17번째입니다.🙂 이번 글에서는 제가 JUnit5 Vintage엔진에 병렬화를 도입한 이야기를 해보려고 합니다.  잠깐만 JUnit Vintage Engine이 뭐야..? 우선, 간단히 JUnit5의 구조 및 Vintage Engine에 대해 설명을 하겠습니다. JUnit5은 테스트 프레임워크를 JVM에서 실행하기 위해 JUnit Platform을 제공합니다.Platform은 ..
다양한 시각에서 바라본 Java (3) - 동시성 프로그래밍
아래의 링크는 JUnit 5에서 JUnit 3, 4의 테스트 코드 실행에 병렬화를 지원하자고 하는 이슈입니다.https://github.com/junit-team/junit5/issues/2229 Support some level of parallelization in junit-vintage-engine · Issue #2229 · junit-team/junit5Goal Add support for some level of parallelization inside the Junit Vintage engine. Ideally the level of configuration should be similar to maven surefire parallel options. Why When including j..
다양한 시각에서 바라본 Java (2)
이번 글에서는 자바를 사용하며 주로 다루게 되는 예외와 자바의 핵심 기능인 리플렉션, 그리고 그 외 기능에 대해 다뤄보겠습니다.1. 예외1. 예외 vs 에러"예외 발생했어요", "에러 발생했어요" 위의 두 문구는 제가 스프링을 개발하며 들었던 말입니다.보통 예외 == 에러라고 생각할 수 있으나, 둘은 천지차이입니다. 예외는 주로 프로그램 실행 중 발생할 수 있는 예상 가능한 문제상황을 말합니다.프로그램의 코드나 문제, 사용자 입력으로 인해 발생하는 오류가 예외죠.Null 객체를 호출하거나 Null 객체의 메서드, 필드에 접근할 때 발생하는 NullPointerException 등이 있습니다. 그에 비해 에러는 시스템 레벨의 심각한 문제를 나타내며 예외에 비해 복구하기 어렵습니다.시스템 자원 부족, 하드웨..
다양한 시각에서 바라본 Java (1)
이번 글에서는 자바의 기초적인 개념에 대해 다뤄보려 합니다. 자바의 장점이 무엇인가요? 1. 객체지향 그로 인해 캡슐화, 상속, 다형성, 추상화라는 장점이 있습니다. 1. 캡슐화캡슐화는 객체 내부의 상세 구현을 감추고 외부에서는 인터페이스를 통해 접근할 수 있도록 하는 것입니다.이를 통해 코드의 유지보수성과 보안을 향상시킬 수 있다는 장점이 있습니다. 오픈소스 기여 활동에서 받은 코멘트를 통해 캡슐화의 중요성을 확인할 수 있습니다.현재 Matcher는 이름과 객체의 타입을 기반으로 비교 작업을 수행하는 로직을 가지고 있습니다. 그러나 이 비교 작업에 필요한 이름이 MatcherOperator라는 외부 객체에 위치해 있는 상황입니다. 이로 인해 Matcher의 내부 구현 세부 사항이 외부로 노출되는 문제가..
TestContainers에 Singleton 적용하기
·Backend/Spring
TestContainers 란?TestContainers는 Docker 컨테이너를 활용하여 실제 서비스와의 통합 테스트를 쉽게 수행할 수 있도록 지원하는 테스트 라이브러리입니다.https://testcontainers.com/ TestcontainersTestcontainers is an opensource framework for providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.testcontainers.com 많은 스프링 사용자들이 Test를 할 때 인메모리 데이터베이스(H2)를 사용하는데 개발, 프로덕..
다양한 시각에서 바라본 JPA
이 글에서는 JPA의 내부 구조에 대해 자세히 다뤄보려 합니다. Spring Boot를 실행시키면 JpaRepository는 어떻게 생성되나요?public interface MemberRepository extends JpaRepository아마 위 코드는 스프링으로 개발하시는 분이라면 한 번이라도 작성해봤을 코드입니다.레포지토리 인터페이스를 정의한 뒤, 제네릭 타입으로 엔티티 클래스와 해당 엔티티의 ID 필드 타입을 지정합니다.이렇게 하면 Spring Data JPA가 자동으로 해당 엔티티에 대한 기본적인 CRUD 작업을 수행하는 구현체를 생성합니다. 분명 MemberRepository는 interface인데 왜 Proxy가 적용됐고 Target Class가 SimpleJpaRepository야? Sp..
코딩하는_대학생
코딩하는 대학생에서 개발자까지