DEV/JUnit
-
[JUnit] 스텁을 활용한 테스트DEV/JUnit 2024. 7. 14. 23:26
애플리케이션을 개발하다보면 몇몇 코드가 다른 클래스나 외부 환경에 의존하는 경우가 있다.특정한 런타임 환경에 의존하는 애플리케이션을 위한 단위 테스트를 작성하기는 매우 어렵다. 실제로 필요한 환경을 테스트의 일부로 구성하여 테스트를 수행하는것은 효과적이나 이는 항상 가능한 방법이 아니다.실제 장비 지원 없이도 소스 코드에 대한 테스트를 지속적으로 작성하고 실행할 수 있도록 가짜 객체를 활용해야 하는데, 방법은 스텁과 모의객체를 활용하는 것 두 가지가 있다. 이번 글에서는 스텁을 활용한 방법을, 다음 글에서는 모의 객체를 활용하는 방법을 정리하고자한다. 스텁호출자를 실제 구현 코드에서부터 격리하기 위해 실제 코드 대신 런타임에 동작하는 코드를 말한다. 단순하게 만든 스텁으로 실제 코드의 복잡한 기능을 대체..
-
[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가 만들어진 이유 중 하..
-
[JUnit] JUnit 핵심 (3) 의존성 주입 / 반복 테스트 / 파라미터 테스트 / 동적 테스트 / Hamcrest vs AssertJDEV/JUnit 2024. 6. 26. 03:00
JUnit5 이전에는 생성자나 메서드에 파라미터가 있는 것을 허용하지 않았고 테스트는 반드시 기본 생성자만 사용해야했다.JUnit5부터는 이러한 부분이 의존성 주입으로 사용 가능하게 되었다. ParameterResolver 인터페이스는 런타임에 파라미터를 동적으로 리졸브한다.현재 JUnit5에는 3개의 리졸버가 기본으로 내장되어있다.다른 파라미터 리졸버를 사용하려면 @ExtendWith로 적절한 extension을 적용하여 파라미터 리졸버를 명시해야한다. - TestInfoParameterResolver: 현재 실행중인 테스트나 컨테이너에 관한 정보를 제공하기 위해 사용되는 TestInfo 객체를 파라미터로 사용 가능디스플레이 네임, 테스트 클래스, 테스트 메서드, 관련 태그 정보 등import org...
-
[JUnit] JUnit 핵심 (2) 중첩 테스트 / 태그 테스트 / 단언문 / 가정문DEV/JUnit 2024. 6. 20. 21:59
- 중첩 테스트 : @Nested 애노테이션을 사용하여 내부 클래스와 외부 클래스 중첩 테스트개발자가 비즈니스 로직을 잘 따르게 하고, 분명한 테스트 코드를 작성하도록 유도하여 개발자가 테스트 프로세스에 자연스럽게 적응하도록 만든다.결합도 관점에서 개발자가 테스트 그룹 간의 관계를 표현하는 데에도 도움이 된다.package com.study.junit.ch02;import static org.junit.jupiter.api.Assertions.*;import org.junit.jupiter.api.Nested;import org.junit.jupiter.api.Test;import java.text.ParseException;import java.time.LocalDate;import java.time...
-
[JUnit] JUnit 핵심 (1) 생애주기와 동작원리 / 테스트 클래스와 메서드 / 애노테이션DEV/JUnit 2024. 6. 20. 15:26
TDD 하고싶어서 학습하는 JUnit 프레임워크, 책을 기반으로 학습하고 정리하고자한다. 참고 도서https://www.yes24.com/Product/Goods/126579542 JUnit IN ACTION 3판 - 예스24자바 단위 테스트를 위해 알아야 할 모든 것JUnit은 자바 애플리케이션을 단위 테스트하기 위한 사실상의 표준이다. 자바 개발자에게 JUnit은 이제 필수가 되었다. 특히 JUnit 5에서는 모던 자바(자www.yes24.com 해당 책에서는 JUnit5를 주로 다루고 JUnit4와 비교하는 부분이 있을 것으로 보인다. 샘플 코드https://github.com/devkunst/junit-in-action-third-edition-kr GitHub - devkunst/junit-in..