[Spring]JUnit

UnKnown_7·2022년 10월 11일

Spring Framework

목록 보기
5/7

[Dependency 추가]

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<scope>test</scope>
</dependency>

[사용 어노테이션]

  • @RunWith(SpringJUnit4ClassRunner.class)
    - JUnit 프레임워크의 실행 방법을 확장 시 사용하는 어노테이션
    - JUnit이 테스트를 진행하는 중에 사용할 애플리케이션 컨텍스트를 생성하고 관리하는 작업을 진행.
  • @ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
    - 지정된 경로의 root-context.xml 파일을 로딩해서 필요한 클래스를 스프링 빈으로 등록.
  • @Test
    - JUnit에서 아래의 메소드가 단위 테스트 대상임을 나타내는 어노테이션.

[기본 구조]

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j2
public class SampleTests {

    @Setter(onMethod_ = @Autowired)
    private Restaurant restaurant;

    @Test
    public void testExist() {
        assertNotNull(restaurant);
        log.info(restaurant);
    }
}

[assert]

  • 기본적인 테스트 메소드
  • 더 많은 메소드 참고: https://junit.sourceforge.net/javadoc/org/junit/Assert.html
  • assertTrue(a): 조건 a가 참인지 확인
  • assertNotNull(a): 객체 a가 null이 아님을 확인
  • assertArrayEquals(a,b): 배열 a와 b가 일치함을 확인
  • assertEquals(a,b): 객체 a와 b가 같은 값을 가지는지 확인
  • assertEquals(a,b,c): 객체 a와 b가 일치함을 확인(a:예상값, b:결과값, c:오차범위)
  • assertSame(a,b): 객체 a와 b가 같은 객체임을 확인

[AssertThat]

allOf

  • 내부에 선언된 모든 매쳐가 정상일 경우 통과한다.
    ex ) assertThat("myValue", allOf(startsWith("my"), containsString("Val")))

anyOf

  • 내부에 선언된 매쳐중 하나 이상 통과할 경우 통과한다.
    ex ) assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))

bothboth

  • A and B 형식으로 matcher를 사용할 수 있게 해 준다.
  • A, B 매쳐 둘다 통과할 경우 테스트가 성공한다.
    ex ) assertThat("fab", both(containsString("a")).and(containsString("b")))

eithereither

  • A or B 형식으로 matcher를 사용할 수 있게 해 준다.
  • A, B 매쳐 둘중 하나가 성공할 경우 테스트가 성공한다.
    ex ) assertThat("fan", either(containsString("a")).or(containsString("b")))

describedAs

  • 매쳐내부의 메시지를 변경할 수 있다.
    ex ) assertThat (new BigDecimal(“32123”), describedAs("a big decimal equal to %0", equalTo(myBigDecimal), myBigDecimal.toPlainString()));

everyItem

  • 배열이나 리스트를 순회하며 매쳐가 실행된다.
    ex ) assertThat(Arrays.asList("bar", "baz"), everyItem(startsWith("ba”)));
    is
  • is는 두가지 용도로 사용할 수 있다.
  • A is B와 같이 비교값이 서로 같은지 여부를 확인할 경우
  • is가 있음으로써 쉽게 읽혀지는 테스트 코드로 변경하여 준다.
    ex ) assertThat("Simple Text", is("Simple Text"));
    assertThat("Simple Text", is(equalTo("Simple Text"))); // 위와 동일

isA

  • 비교되는 값이 특정 클래스일 경우 테스트가 통과된다.
  • is(instanceOf(SomeClass.class))와 동일하다.
    ex ) assertThat(cheese, isA(Cheddar.class))

anything

  • 항상 true를 반환하는 매쳐

hasItem

  • 배열에서 매쳐가 통과하는 값이 하나 이상이 있는지 여부를 검사한다.
    ex ) assertThat(Arrays.asList("foo", "bar"), hasItem("bar"))

hasItems

  • 배열에서 매쳐리스트에 선언된 값들 모두가 하나 이상 있는지 여부를 검사한다.
    ex ) assertThat(Arrays.asList("foo", "bar", "baz"), hasItems("baz", "foo"))

equalTo

  • 두 값이 같은지 여부를 체크한다. is와 동일하게 사용할 수 있다.
    ex ) assertThat("foo", equalTo("foo"));

any

  • 비교값이 매쳐의 타입과 동일한지 여부를 체크한다.
  • instanceOf와는 다르게 매쳐의 값은 앞서 비교값의 타입의 자식만 비교할 수 있다.
    ex ) assertThat(new Canoe(), instanceOf(Canoe.class));

instanceOf

  • 비교값이 매쳐의 타입과 동일한지 여부를 체크한다.
  • any와는 다르게 매쳐의 값은 비교값과 연관없는 경우에도 사용할 수 있다.
    ex ) assertThat(new Canoe(), instanceOf(Paddlable.class));

not

  • is와 동일하게 두가지 경우로 사용할 수 있다.

  • 내부에 매쳐를 선언할 경우 내부 매쳐의결과를 뒤집는다.
    ex ) assertThat(cheese, is(not(equalTo(smelly))))

  • not뒤에 값이 나올 경우, 같지 않을 경우 테스트가 통과한다.
    ex ) assertThat("Test", not("tEST"));

nullValue

  • 비교값이 null일경우 테스트가 통과한다.
    ex ) assertThat(cheese, is(nullValue())

notNullValue

  • 비교값이 null이 아닐경우 테스트가 통과한다.
    ex ) assertThat(cheese, is(notNullValue()))

sameInstance

  • 비교 매쳐의 값과 같은 인스턴스일 경우 테스트가 통과한다.
  • theInstance 와 동일
    ex ) assertThat("Test", not(sameInstance("not Same Instance")));

theInstance

  • 비교매쳐의 값과 같은 인스턴스일 경우 테스트가 통과한다.
  • sameInstance 와 동일
    ex ) assertThat("Test", not(sameInstance("not Same Instance")));

containsString

  • 특정 문자열이 있는지를 검사한다.
    ex ) assertThat("myStringOfNote", containsString("ring"));

startsWith

  • 특정 문자열로 시작하는지를 검사한다.
    ex ) assertThat("myStringOfNote", startsWith("my"))

endsWith

  • 특정 문자열로 종료되는지를 검사한다.
    ex ) assertThat("myStringOfNote", endsWith("Note"))
profile
개인 공부 요약용 블로그

0개의 댓글