-
[Java] 읽기 쉬운 테스트를 위한 Hamcrest 사용하기Java 2019. 4. 15. 00:46
Hamcrest는 자바 유닛 테스트 작성 시 자주 사용되는 프레임워크다. JUnit에 포함되어 있어 쉽게 사용 가능하며 matcher 라이브러리를 호출하여 좀 더 읽기 쉬운 테스트 코드 작성에 도움을 준다.
간단한 테스트
import org.junit.jupiter.api.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; public class BiscuitTest { @Test public void testEquals() { Biscuit theBiscuit = new Biscuit("Ginger"); Biscuit myBiscuit = new Biscuit("Ginger"); assertThat(theBiscuit, equalTo(myBiscuit)); } }
Hamcrest 프레임워크는 기본적으로 assertThat을 사용하여 비교를 권장한다.
Hamcrest 프레임워크의 구성
Core
anything - always matches, useful if you don’t care what the object under test is
describedAs - decorator to adding custom failure description
is - decorator to improve readability - see “Sugar”, below
Logical
allOf - matches if all matchers match, short circuits (like Java &&)
anyOf - matches if any matchers match, short circuits (like Java )
not - matches if the wrapped matcher doesn’t match and vice versa
Object
equalTo - test object equality using Object.equals
hasToString - test Object.toString
instanceOf, isCompatibleType - test type
notNullValue, nullValue - test for null
sameInstance - test object identity
Beans
hasProperty - test JavaBeans properties
Collections
array - test an array’s elements against an array of matchers
hasEntry, hasKey, hasValue - test a map contains an entry, key or value
hasItem, hasItems - test a collection contains elements
hasItemInArray - test an array contains an element
Number
closeTo - test floating point values are close to a given value
greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo - test ordering
Text
equalToIgnoringCase - test string equality ignoring case
equalToIgnoringWhiteSpace - test string equality ignoring differences in runs of whitespace
containsString, endsWith, startsWith - test string matching출처:
'Java' 카테고리의 다른 글
[Java] Lombok @Data 어노테이션 (0) 2019.05.07 [Java] 정규표현식 기본 문법 (0) 2019.04.23 [Java] 부정을 나타내는 변수명 붙이는 방법 (0) 2019.04.21 [Java] StringUtils.isBlank 와 StringUtils.isEmpty 차이 (2) 2019.04.15 [Java] 인기있는 Unit Test 네이밍 규칙 (0) 2019.04.15 댓글