Programming/Spring
[TDD] assertThat 사용법
기록하는 백앤드개발자
2020. 12. 19. 03:20
반응형
assertThat(비교대상, Matcher<? super T> matcher)의 형태로 사용한다.
// 10진수를 n진수로 변환하는 프로그램을 작성하시오.. (단, n의 범위는 2 <= n <= 16)
public String core(int num, int inSu){
String result ="";
LinkedList<Character> resultList = new LinkedList<>();
String arr = "0123456789ABCDEF";
while (num > 0){
resultList.add(arr.charAt(num % inSu));
num = num/inSu;
}
while ( !resultList.isEmpty() ){
result += resultList.pollLast();
}
System.out.println(result);
return result;
}
@Test
public void 오답(){
assertThat(core(21,11), CoreMatchers.is("1A"));
}
static으로 선언하면 문법을 간결하게 할 수 있다.
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@Test
public void 오답(){
assertThat(core(21,11), is("1A"));
}
JUnit Matcher 종류
allOf
assertThat("myValue", allOf(startsWith("my"), containsString("Val")))
- 내부에 선언된 모든 매쳐가 정상일 경우 통과한다.
anyOf
assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))
- 내부에 선언된 매쳐중 하나 이상 통과할 경우 통과한다.
bothboth
assertThat("fab", both(containsString("a")).and(containsString("b")))
- A and B 형식으로 matcher를 사용할 수 있게 해 준다.
- A, B 매쳐 둘다 통과할 경우 테스트가 성공한다.
eithereither
assertThat("fan", either(containsString("a")).or(containsString("b")))
- A or B 형식으로 matcher를 사용할 수 있게 해 준다.
- A, B 매쳐 둘중 하나가 성공할 경우 테스트가 성공한다.
describedAs
assertThat (new BigDecimal(“32123”), describedAs("a big decimal equal to %0", equalTo(myBigDecimal), myBigDecimal.toPlainString()));
- 매쳐내부의 메시지를 변경할 수 있다.
is
assertThat("Simple Text", is("Simple Text"));
not
assertThat(cheese, is(not(equalTo(smelly))))
anything
- 항상 true를 반환한다.
hasItem
assertThat(Arrays.asList("foo", "bar"), hasItem("bar"))
- 배열에서 매쳐가 통과하는 값이 하나 이상이 있는지 여부를 검사한다.
hasItems
assertThat(Arrays.asList("foo", "bar", "baz"), hasItems("baz", "foo"))
equalTo
assertThat("foo", equalTo("foo"));
nullValue
assertThat(cheese, is(nullValue())
- 비교값이 null일경우 테스트가 통과한다.
containsString
assertThat("myStringOfNote", containsString("ring"));
- 특정 문자열이 있는지를 검사한다.
startsWith
assertThat("myStringOfNote", startsWith("my"))
- 특정 문자열로 시작하는지를 검사한다.
endsWith
assertThat("myStringOfNote", endsWith("Note"))
- 특정 문자열로 종료되는지를 검사한다.
반응형