상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - JUnit에서 assertThat을 사용하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
JUnit에서 `assertThat` 메소드는 더 읽기 쉽고 표현력 있는 테스트 검증을 작성하기 위해 사용됩니다. `assertThat`은 주로 Hamcrest 매처(Matcher) 라이브러리와 함께 사용되어, 객체의 상태나 값이 기대한 조건과 일치하는지 직관적으로 검사할 수 있게 도와줍니다. 기본 개념 - `assertThat`은 두 개의 인자를 받습니다. 1. 실제 값(actual value) 2. 기대 조건을 나타내는 Matcher 객체 형식은 다음과 같습니다. ```java assertThat(actualValue, matcher); ``` - `actualValue`는 테스트하고자 하는 값입니다. - `matcher`는 Hamcrest에서 제공하는 다양한 조건 중 하나로, 값이 어떤 상태인지 판단하는 역할을 합니다. 준비 사항 1. JUnit 4.4 이상에서는 `assertThat` 메소드가 기본적으로 포함되어 있습니다. 2. 대부분의 경우, 추가로 Hamcrest 라이브러리를 의존성에 포함시켜야 합니다. - JUnit 5 (JUnit Jupiter)에서는 `org.hamcrest` 라이브러리를 별도로 추가하고 `org.hamcrest.MatcherAssert.assertThat`를 사용합니다. 3. import 구문 예: ```java import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; ``` 또는 JUnit 4에서는 ```java import static org.junit.Assert.assertThat; import static org.hamcrest.Matchers.*; ``` 주요 Hamcrest 매처 예시 - `is(value)` : 값이 기대값과 일치하는지 확인 - `equalTo(value)` : `is`와 유사하게 동작 - `not(value)` : 값이 기대값과 다름을 확인 - `nullValue()` : null 인지 확인 - `notNullValue()` : null이 아님을 확인 - `containsString(substring)` : 문자열이 특정 부분 문자열을 포함하는지 확인 - `hasItem(item)` : 컬렉션이 특정 아이템을 포함하는지 확인 - `greaterThan(value)`, `lessThan(value)` : 크기 비교 - 여러 매처를 조합할 수 있는 `allOf(...)`, `anyOf(...)` 등. 사용 예 ```java import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; public class ExampleTest { @Test public void testString() { String actual = "Hello World"; // 문자열이 "Hello World"와 같은지 확인 assertThat(actual, is("Hello World")); // 문자열에 "World" 포함 여부 확인 assertThat(actual, containsString("World")); // null이 아님 확인 assertThat(actual, notNullValue()); } @Test public void testNumber() { int num = 10; // num이 5보다 큼 확인 assertThat(num, greaterThan(5)); // num이 20보다 작음 확인 assertThat(num, lessThan(20)); } @Test public void testCollection() { List<String> items = Arrays.asList("apple", "banana", "cherry"); // 리스트에 "banana" 포함 여부 확인 assertThat(items, hasItem("banana")); // 모든 아이템이 문자열인지 확인 assertThat(items, everyItem(instanceOf(String.class))); } } ``` 요약 - `assertThat`은 테스트 값과 기대 조건을 Matcher를 통해 표현하여 더 직관적이고 의미 있는 테스트 코드를 작성할 수 있게 한다. - Hamcrest 매처를 잘 활용하면 다양한 복합 조건도 쉽게 표현 가능. - JUnit 4에서는 기본 제공, JUnit 5에서는 Hamcrest를 별도로 추가하여 사용. 이처럼 JUnit에서 `assertThat`과 Hamcrest 매처를 적절히 사용하면 테스트 실패 시 어떤 조건이 실패했는지 명확히 알 수 있고, 가독성 높은 테스트 코드를 작성할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기