junit5
-
[JUnit] JUnit 5를 사용한 TDDDEV/JUnit 2025. 1. 23. 16:32
TDD 핵심 개념TDD란 요구사항을 테스트로 뽑아낸 다음, 테스트를 통과하는 프로그램을 개발하는 과정을 되도록 짧게 반복하는 프로그래밍 기법이다.1. 코드를 작성하기 전에 실패하는 테스트를 작성한다.2. 테스트를 통과할 수 있는 가장 단순한 코드를 작성한다. 통념에 따르면 프로그램 개발이란 코드를 작성한 다음, 실행이 잘되는지 하나씩 따져가며 테스트하는 것을 의미했다.코드를 작성한다 => 테스트 한다 => (반복한다) 그러나 TDD는 이 개발 주기를 뒤집는다.테스트 한다 => 코드를 작성한다 => (반복한다) 즉 TDD안에서 테스트는 설계를 주도하고, 테스트 대상 메서드의 첫 번째 클라이언트가 되는것을 의미한다. TDD 장점- 분명한 목표를 가지고 코드를 짤 수 있을뿐더러, 애플리케이션이 해야 하는 일만..
-
[JUnit] 데이터베이스 애플리케이션 테스트DEV/JUnit 2025. 1. 22. 22:36
데이터베이스 테스트의 문제점1. 단위테스트는 코드를 격리시켜 실행해야한다, but 영속성 계층은 반드시 데이터베이스와의 상호작용이 필요하다.: 데이터베이스와 관련한 단위테스트는 테스트가 데이터베이스에 의존해야한다.2. 단위테스트는 작성과 실행이 쉬워야한다, but 데이터베이스에 접근하는 코드는 작성 및 실행이 번거롭다.: SQL 작성 및 수많은 try-catch-finally 코드를 작성해야한다.3. 단위테스트는 실행 속도가 빨라야한다, but 데이터베이스에 접근하는 코드들은 상대적으로 느리다.: 다수의 사용자가 접근이 가능한 원격 서버이기때문에 데이터베이스 접근 자체가 느림 이러한 문제를 데이터베이스 단위 테스트 시 발생하는 임피던스 불일치라고 한다.이는 객체 지향 프로그래밍과 관계형 데이터베이스 간 ..
-
[JUnit] Spring Boot 애플리케이션 테스트DEV/JUnit 2024. 12. 10. 17:33
Spring Initializr 를 이용해 Spring 프로젝트 만들기https://start.spring.io/해당 페이지에서 스프링을 구동하기 위한 최소한의 설정을 가지고 스프링 부트 프로젝트 뼈대를 만들어줌- Explore : 생성될 프로젝트에 대한 세부정보 확인 가능- Generate : 프로젝트가 포함된 zip파일 다운로드 JUnit5로 테스트한 Spring 애플리케이션을 Spring Boot로 전환하기예제 코드 : https://github.com/devkunst/junit-in-action-third-edition-kr/tree/master/ch17-spring-boot/ch17-spring-boot-initializr-old-feature 1. 패키지 구조 설정- model : 모델 클래..
-
[JUnit] JUnit5 extension (확장 모델)DEV/JUnit 2024. 10. 22. 19:57
JUnit4의 경우 runner와 rule을 사용하여 테스트를 확장할 수 있었다.JUnit5 확장 모델은 Extension API라는 단일 개념으로 설명할 수 있다.Extension 자체는 내부에 필드나 메서드가 없는 인터페이스인 마커 인터페이스일 뿐이다. 마커 인터페이스?더보기태그 인터페이스 또는 토큰 인터페이스라고도 불리며 구현 메서드가 따로 없는 인터페이스로, 해당 인터페이스를 구현하는 클래스에 특별한 의미나 기능을 부여하기 위해 사용한다. 대표적인 사례로 Serializable, Cloneable 인터페이스가 있다. Serializable 인터페이스에는 구현 메서드가 없지만 해당 인터페이스를 구현하는 클래스는 직렬화 속성을 갖는다는 것을 나타낼 수 있다. * 사용 목적JUnit5 extensi..
-
[JUnit] JUnit4에서 JUnit5로 마이그레이션DEV/JUnit 2024. 6. 30. 01:38
왜 JUnit4에서 JUnit5로 전환해야하며, JUnit5가 등장한 이유가 무엇일까?JUnit in action에서 자세히 다루고 있어 가볍게 정리하고 넘어가고자한다.JUnit4 아키텍처, JUnit5 아키텍처 비교JUnit4는 단순한 모놀리식 아키텍처를 가지고 있다.JUnit4의 모든 기능은 jar파일(junit.jar) 한개 안에 들어 있다.이는 개발자가 JUnit4를 사용하고자한다면 클래스패스에 단일 jar만 추가하면 된다는 뜻이다. 단일 jar파일로도 동작이 가능하지만, JUnit4의 기능을 조금 더 확장해서 사용하는 것이 일반적이다.JUnit4 runner, rule을 활용하여 테스트를 확장 할 수 있으나 runner의 리플렉션 사용은 캡슐화를 저해한다.이는 JUnit5가 만들어진 이유 중 하..