상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
파산의 원인: 이해하기 쉬운 가이드
학자금 대출 분할상환: 선택의 기준
교통사고와 차량 안전 성능
교통사고와 관련된 세법 쟁점 점검
연체 비용을 줄이는 스마트한 금융 선택
신용등급 낮아지면 어떤 일이 생길까?
신용등급 관리, 지금 시작해야 하는 이유
지급명령을 통한 신속한 채권 회수 전략
지급명령과 상법의 연관성
미수금 회수 방법: 효과적인 전략과 팁
미수금과 현금 흐름: 깨달아야 할 사실
미수금 계획의 필요성과 실행 방안
Previous
Next
수정하기 - JUnit에서 커스터마이즈된 Assertions 클래스 작성 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
JUnit에서 기본 Assertions 클래스(org.junit.jupiter.api.Assertions)를 사용하다 보면, 프로젝트 내에서 공통적으로 자주 사용하는 검증 로직을 묶어서 커스터마이즈된 Assertions 클래스를 만들고 싶을 때가 있습니다. 이렇게 하면 테스트 코드의 가독성과 재사용성을 높일 수 있습니다. JUnit에서 커스터마이즈된 Assertions 클래스 작성 방법 1. 기본 아이디어 Assertions 클래스는 보통 `static` 메서드 형태로 테스트의 조건을 검증합니다. 커스텀 Assertions 클래스도 이와 유사하게, `static` 메서드를 제공하는 유틸리티 클래스로 만들면 편리합니다. 기존 JUnit Assertions를 내부에서 호출하거나, 좀 더 도메인 특화된 검증 로직을 직접 구현해 반환할 수 있습니다. 2. 커스텀 Assertions 클래스 작성 - 새로운 클래스를 생성합니다. 예를 들어, 도메인 객체에 대한 맞춤형 검증을 하려면 클래스 이름을 `MyDomainAssertions`로 할 수 있습니다. - 클래스에 `public`과 `final` 키워드를 붙여서 확장하지 않도록 하기도 합니다. - 생성자는 private으로 두어 인스턴스화하지 못하게 합니다. - 내부에 `static` 메서드들을 정의하며, 메서드 명칭은 직관적이고 사람이 읽기 쉽게 작성합니다. - 필요하면 JUnit의 `Assertions` 클래스의 메서드를 콜하거나, 자신만의 메시지를 붙여서 오류를 던질 수 있습니다. - 가능하면, 검증 대상 객체를 파라미터로 받아 그 상태를 검증한 후, 검증에 실패하면 예외를 던집니다. 3. 예제 코드 ```java package com.example.test; import static org.junit.jupiter.api.Assertions.fail; public final class MyDomainAssertions { private MyDomainAssertions() { // 인스턴스 생성 방지 } / * Example: MyDomain 객체의 특정 필드를 검증하는 커스텀 Assertion */ public static void assertValidMyDomain(MyDomain domain) { if (domain == null) { fail("MyDomain 객체가 null 입니다."); } if (domain.getValue() <= 0) { fail("MyDomain의 value 값은 0보다 커야 합니다. 실제 값: " + domain.getValue()); } // 추가 검증 조건... } / * 예를 들어 두 도메인 객체가 동일한 특정 상태인지 검증 */ public static void assertMyDomainEquals(MyDomain expected, MyDomain actual) { if (expected == null && actual == null) { return; } if (expected == null || actual == null) { fail("둘 중 하나의 객체가 null 입니다."); } if (!expected.getValue().equals(actual.getValue())) { fail(String.format("MyDomain 객체의 value가 다릅니다. 기대값: %s, 실제값: %s", expected.getValue(), actual.getValue())); } // 필요시 추가 필드 비교 } } ``` 4. 테스트 코드에서 사용법 ```java import static com.example.test.MyDomainAssertions.assertValidMyDomain; @Test void testMyDomainLogic() { MyDomain domain = new MyDomain(10); assertValidMyDomain(domain); // 커스텀 Assertion 사용 } ``` 5. AssertJ 같은 라이브러리를 써서 확장하는 방법 (선택사항) JUnit 내장 Assertions 외에도, AssertJ는 커스텀 Assertions 클래스를 작성하기 위해 `AbstractAssert` 클래스를 상속받는 방식을 제공합니다. 좀 더 풍부하고 유연한 커스텀 Assertions를 만들고 싶다면 AssertJ를 고려할 수 있습니다. 6. 장점 - 검증 로직이 중복되지 않고 한 곳에 모임 - 검증 실패 시 메시지가 일관적이고 명확 - 테스트 코드가 더 간결하고 가독성 좋아짐 --- 요약 JUnit에서 커스텀 Assertions 클래스를 만들 때는, `static` 메서드들로 구성된 클래스를 만들고, 그 안에서 원하는 검증 조건을 구현하며, 실패 시 `Assertions.fail()` 또는 `<a href='https://sangseek.com/sangseeks/AssertionError/ko'>AssertionError</a>`를 직접 throw 합니다. 이를 테스트 코드에서 호출해서 쓰면 됩니다. 좀 더 고급 검증 기능이나 도메인에 특화된 메서드를 만들어 테스트의 품질과 유지보수성을 높일 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기