1. JUnit

  1. [설명]
    1. 자바를 위한 단위 테스트 라이브러리 입니다
    2. 자바 애플리케이션에 대한 단위 테스트를 쉽게 해주는 테스트용 프레임 워크라고 생각하시면 됩니다
    3. 단정문(assert())으로 Test 케이스의 수행결과를 판별해 알려줍니다
    4. @(어노테이션)으로 Test가 간결해지도록 지원해줍니다
    5. Test결과를 Test Class로 남김으로써 Test History를 저장 할 수 있습니다

2. Unit Test?

  1. [설명]
    1. 모든 함수와 메서드에 대한 Test 케이스를 작성하는 절차를 말합니다
    2. 소스코드의 특정 모듈이 의도대로 정확히 동작하는지를 검증합니다

3. JUnit의 Assert Method’s?

  1. [기능]
    1. assertEquals(a, b) : 객체 a와 b가 같은 값을 가지는지를 확인합니다
    2. assertEquals(a, b, c) : 객체 a와 b가 같은 값을 가지는지 확인하고, c는 오차범위를 말합니다
    3. assertArrayEquals(a, b) : 배열 a와 b가 일치하는지를 확인합니다
    4. assertSame(a, b) : 객체 a와 b가 같은 객체인지 확인합니다
    5. assertTrue(a) : 조건 a가 참인지 확인합니다
    6. assertNull(a) : 객체 a가 Null인지 확인합니다
    7. assertNotNull(a) : 객체 a가 Null인지 아닌지 확인합니다

4. JUnit의 Annotaion?

  1. [기능]
    1. @Test
      1. 테스트 대상 메서드임을 지정해 줍니다
    2. @Test(timeout = 밀리초)
      1. 테스트 메서드 수행시간을 제한할 수 있습니다
      2. 테스트 메서드가 리턴값을 반환하는데 걸리는 시간이 지정된 밀리초를 넘긴다면 해당 테스트는 실패로 판별한다는 의미입니다
    3. @Test(expected = 예외)
      1. 예외 발생 여부에 따라 성공/실패를 판별할 수 있습니다
    4. @Ignore
      1. 메서드를 실행하지 않도록 지정해주는 것 입니다
    5. @BeforeEach, @Before
      1. 모든 @Test 메서드가 실행되기 전에 실행되는 메서드를 지정하는 어노테이션 입니다
      2. 테스트마다 공통으로 쓰이면서, 테스트 전에 리셋되어야 할 항목이 들어갑니다
    6. @AfterEach, @After
      1. 모든 @Test 메서드의 실행되는 메서드를 지정하는 어노테이션 입니다
      2. 각테스트가 끝나고 각각 호출 됩니다
    7. @BefroeAll, @BeforeClass
      1. 테스트 클래스가 실행될 때 딱 한번만 수행되는 테스트 메서드를 지정하는 어노테이션 입니다
    8. @AfterAll, @AfterClass
      1. 테스트 클래스가 실행이 끝난 뒤에 딱 한 번만 수행되는 테스트 메서드를 지정하는 어노테이션을 말합니다
      2. 테스트 클래스의 모든 테스트가 완료된 뒤 한 번 만 호출 됩니다

5. Assert J?

  1. [설명]
    1. 자바 JUnit의 테스트 코드에 사용되어, 테스트 코드의 가독성과 편의성을 높여주는 라이브러리 입니다
    2. 메서드 체이닝을 지원하고, 더 직관적이고 읽기 쉬운 테스트 코드 작성이 가능합니다
    3. 테스트에 필요한 풍부한 메서드들을 제공합니다
  2. [Import]
    1. static 임포트를 통해 AssertJ의 다양한 API를 클래스 이름 없이 사용이 가능합니다
    2. static org.assertj.core.api.Assertions.*;
    3. org.junit.jupiter.api.Test;
  3. [Method]
    1. 모든 테스트 코드는 assertThat()으로 시작합니다
    2. assertThat(테스트 타켓).메서드1().메서드2(); 여러 메서드들을 연쇄적으로 호출해 코드를 작성할 수 있습니다.(메서드 체이닝이라고 말합니다)
    3. [문자열 Test]
      1. isNotEmpty() : 비어 있지 않다는 의미입니다
      2. contains(e) : element를 포함하겠다는 의미입니다
      3. doesNotContain(e) : element를 포함하지 않겠다는 의미입니다
      4. startsWith(e) : element로 시작한다는 의미입니다
      5. endsWith(e) : element로 끝내겠다는 의미입니다
      6. isEqualTo(e) : element와 일치하는지 여부를 묻습니다
    4. [숫자 Test]
      1. isPositive() : 양수인지를 확인합니다
      2. isGreaterThan(num) : num보다 큰지를 확인합니다
      3. isLessThan(num) : num보다 작은지를 확인합니다
      4. isEqualTo(num1, offset(num2)) : offset num2기준으로 num1과 같은지를 확인합니다
      5. isEqualTo(num) : offset없이 num과 같다는 의미입니다
  4. [Interface]
    1. [설명]
      1. 모든 Assertion 객체가 기본적으로 제공됨을 말합니다
    2. [기능]
      1. isEqualTo(Object o) : 실제 값이 주어진 값과 같은지를 확인합니다
      2. isNotEqualTo(Object o) : 실제 값이 주어진 값과 같지 않은지를 확인합니다
      3. isInstanceOf(Class<?> type), isInstanceOfAny(Class) : 실제 값이 주어진 유형의 인스턴스인지 확인합니다
      4. isExactlySameInstanceOf(Class<?> type) : 실제 값이 정확히 주어진 유혁의 인스턴스인지 확인합니다
      5. asList() : 실제 값이 List의 인스턴스인지 확인하고 list Assertion을 반환합니다
      6. asString() : toString()으로 실제 값에 대한 문자열을 반환합니다
      7. hasSameClassAs(Object o), doesNotHaveSameClassAs(Object o), hasSameHashCodeAs(Object o), doesNotHaveSameHashCodeAs(Objecto) : 실제 값 / 객체가 주어진 객체와 동일한 클래스 / 해시코드를 가지고 있는지 확인 / doesNot이 붙은 메서드는 반대로 가지고 있지 않은지를 확인합니다
      8. hasToString(String str), doesNotHaveToString(String str) : 실제 actual.toString()값이 주어진 String과 같은지 확인하고 doesNot이 붙은 메서드는 반대로 같지 않는지 확인합니다
      9. isIn(Iterable<?> v), isIn(Object … v) : 주어진 iterable or 값 배열에 실제 값이 있는지 확인하고 isNotIn(Iterable<?> v), isNoIn(Object .. v)는 그 반대입니다
      10. isNull() : 실제 값이 null인지 확인합니다, isNotNull()은 그 반대입니다
      11. isSameAs(Object o) : ==비교를 사용하여 실제 값이 주어진 값과 동일한지를 확인하며, isNotSameAs(Object o)는 그 반대입니다
      12. as(”설명”) : Assertion을 설명하는 메서드이며 “설명”의 내용이 테스트 결과에 출력되도록 할 수 있습니다