assertEquals
assertEquals는 JUnit에서 제공하는 기본적인 단위 테스트 메서드 중 하나로, 두 값이 같은지를 비교하는 데 사용된다. 이 메서드는 주로 테스트에서 예상 결과와 실제 결과를 비교할 때 사용된다.
기본 사용법:
assertEquals(expected, actual) 형태로 사용된다. 여기서 expected는 예상하는 값이고, actual은 실제 테스트 결과다.다양한 데이터 타입 지원:
assertEquals는 기본 데이터 타입(int, float 등)과 객체 타입(String, List 등) 모두를 비교할 수 있다.equals() 메서드를 사용하여 비교한다.오류 메시지:
assertEquals("메시지", expected, actual);
import static org.junit.Assert.assertEquals;
public class ExampleTest {
@Test
public void testAddition() {
int expected = 5;
int actual = 2 + 3;
// 값 비교
assertEquals(expected, actual);
}
@Test
public void testStringComparison() {
String expected = "Hello";
String actual = "Hello";
// 문자열 비교
assertEquals(expected, actual);
}
}
assertEquals는 간단하고 직관적인 방식으로 두 값을 비교할 수 있는 메서드로, 단위 테스트에서 가장 많이 사용되는 검증 메서드 중 하나다. 그러나 가독성이나 복잡한 조건 검증이 필요한 경우에는 assertThat과 같은 다른 메서드를 사용하는 것이 좋다.
assertThat
assertThat은 주로 JUnit과 Hamcrest 라이브러리에서 사용하는 검증 메서드로, 테스트의 가독성을 높이고 더 유연한 조건 검증을 가능하게 한다. 이 메서드는 "어떤 값이 특정 조건을 만족하는가?"라는 질문을 던지는 형식으로 사용된다.
가독성:
assertThat은 자연어에 가까운 형식으로 작성할 수 있어, 테스트 코드의 가독성을 높인다.assertThat(actual, is(expected))와 같은 구문은 "actual이 expected와 같다"는 의미를 명확히 전달한다.매처(Matcher):
assertThat은 다양한 매처를 사용할 수 있어, 여러 조건을 검증하는 데 유용하다.is, not, greaterThan, lessThan, containsString 등의 매처를 사용하여 복잡한 조건을 표현할 수 있다.유연성:
assertThat(list, hasSize(3))와 assertThat(list, contains("A", "B", "C"))를 함께 사용할 수 있다.import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
public class ExampleTest {
@Test
public void testSomething() {
int actual = 5;
int expected = 5;
// 기본적인 값 비교
assertThat(actual, is(expected));
// 다른 매처 사용
List<String> list = Arrays.asList("A", "B", "C");
assertThat(list, hasSize(3));
assertThat(list, contains("A", "B", "C"));
}
}
assertThat은 테스트 코드의 가독성을 높이고, 다양한 조건을 쉽게 검증할 수 있는 강력한 도구다. 더 복잡한 테스트 시나리오에서도 유용하게 사용할 수 있다.
결론적으로, assertThat은 더 가독성이 좋고 유연한 방식으로 assertions을 수행할 수 있는 반면, assertEquals는 간단한 비교에 적합하다고 할 수 있다.