관리 메뉴

피터의 개발이야기

[TDD] assertThat 사용법 본문

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"))

- 특정 문자열로 종료되는지를 검사한다.

 

 

반응형
Comments