1. JUnit
- [설명]
- 자바를 위한 단위 테스트 라이브러리 입니다
- 자바 애플리케이션에 대한 단위 테스트를 쉽게 해주는 테스트용 프레임 워크라고 생각하시면 됩니다
- 단정문(assert())으로 Test 케이스의 수행결과를 판별해 알려줍니다
- @(어노테이션)으로 Test가 간결해지도록 지원해줍니다
- Test결과를 Test Class로 남김으로써 Test History를 저장 할 수 있습니다
2. Unit Test?
- [설명]
- 모든 함수와 메서드에 대한 Test 케이스를 작성하는 절차를 말합니다
- 소스코드의 특정 모듈이 의도대로 정확히 동작하는지를 검증합니다
3. JUnit의 Assert Method’s?
- [기능]
- assertEquals(a, b) : 객체 a와 b가 같은 값을 가지는지를 확인합니다
- assertEquals(a, b, c) : 객체 a와 b가 같은 값을 가지는지 확인하고, c는 오차범위를 말합니다
- assertArrayEquals(a, b) : 배열 a와 b가 일치하는지를 확인합니다
- assertSame(a, b) : 객체 a와 b가 같은 객체인지 확인합니다
- assertTrue(a) : 조건 a가 참인지 확인합니다
- assertNull(a) : 객체 a가 Null인지 확인합니다
- assertNotNull(a) : 객체 a가 Null인지 아닌지 확인합니다
4. JUnit의 Annotaion?
- [기능]
- @Test
- 테스트 대상 메서드임을 지정해 줍니다
- @Test(timeout = 밀리초)
- 테스트 메서드 수행시간을 제한할 수 있습니다
- 테스트 메서드가 리턴값을 반환하는데 걸리는 시간이 지정된 밀리초를 넘긴다면 해당 테스트는 실패로 판별한다는 의미입니다
- @Test(expected = 예외)
- 예외 발생 여부에 따라 성공/실패를 판별할 수 있습니다
- @Ignore
- 메서드를 실행하지 않도록 지정해주는 것 입니다
- @BeforeEach, @Before
- 모든 @Test 메서드가 실행되기 전에 실행되는 메서드를 지정하는 어노테이션 입니다
- 테스트마다 공통으로 쓰이면서, 테스트 전에 리셋되어야 할 항목이 들어갑니다
- @AfterEach, @After
- 모든 @Test 메서드의 실행되는 메서드를 지정하는 어노테이션 입니다
- 각테스트가 끝나고 각각 호출 됩니다
- @BefroeAll, @BeforeClass
- 테스트 클래스가 실행될 때 딱 한번만 수행되는 테스트 메서드를 지정하는 어노테이션 입니다
- @AfterAll, @AfterClass
- 테스트 클래스가 실행이 끝난 뒤에 딱 한 번만 수행되는 테스트 메서드를 지정하는 어노테이션을 말합니다
- 테스트 클래스의 모든 테스트가 완료된 뒤 한 번 만 호출 됩니다
5. Assert J?
- [설명]
- 자바 JUnit의 테스트 코드에 사용되어, 테스트 코드의 가독성과 편의성을 높여주는 라이브러리 입니다
- 메서드 체이닝을 지원하고, 더 직관적이고 읽기 쉬운 테스트 코드 작성이 가능합니다
- 테스트에 필요한 풍부한 메서드들을 제공합니다
- [Import]
- static 임포트를 통해 AssertJ의 다양한 API를 클래스 이름 없이 사용이 가능합니다
- static org.assertj.core.api.Assertions.*;
- org.junit.jupiter.api.Test;
- [Method]
- 모든 테스트 코드는 assertThat()으로 시작합니다
- assertThat(테스트 타켓).메서드1().메서드2(); 여러 메서드들을 연쇄적으로 호출해 코드를 작성할 수 있습니다.(메서드 체이닝이라고 말합니다)
- [문자열 Test]
- isNotEmpty() : 비어 있지 않다는 의미입니다
- contains(e) : element를 포함하겠다는 의미입니다
- doesNotContain(e) : element를 포함하지 않겠다는 의미입니다
- startsWith(e) : element로 시작한다는 의미입니다
- endsWith(e) : element로 끝내겠다는 의미입니다
- isEqualTo(e) : element와 일치하는지 여부를 묻습니다
- [숫자 Test]
- isPositive() : 양수인지를 확인합니다
- isGreaterThan(num) : num보다 큰지를 확인합니다
- isLessThan(num) : num보다 작은지를 확인합니다
- isEqualTo(num1, offset(num2)) : offset num2기준으로 num1과 같은지를 확인합니다
- isEqualTo(num) : offset없이 num과 같다는 의미입니다
- [Interface]
- [설명]
- 모든 Assertion 객체가 기본적으로 제공됨을 말합니다
- [기능]
- isEqualTo(Object o) : 실제 값이 주어진 값과 같은지를 확인합니다
- isNotEqualTo(Object o) : 실제 값이 주어진 값과 같지 않은지를 확인합니다
- isInstanceOf(Class<?> type), isInstanceOfAny(Class) : 실제 값이 주어진 유형의 인스턴스인지 확인합니다
- isExactlySameInstanceOf(Class<?> type) : 실제 값이 정확히 주어진 유혁의 인스턴스인지 확인합니다
- asList() : 실제 값이 List의 인스턴스인지 확인하고 list Assertion을 반환합니다
- asString() : toString()으로 실제 값에 대한 문자열을 반환합니다
- hasSameClassAs(Object o), doesNotHaveSameClassAs(Object o), hasSameHashCodeAs(Object o), doesNotHaveSameHashCodeAs(Objecto) : 실제 값 / 객체가 주어진 객체와 동일한 클래스 / 해시코드를 가지고 있는지 확인 / doesNot이 붙은 메서드는 반대로 가지고 있지 않은지를 확인합니다
- hasToString(String str), doesNotHaveToString(String str) : 실제 actual.toString()값이 주어진 String과 같은지 확인하고 doesNot이 붙은 메서드는 반대로 같지 않는지 확인합니다
- isIn(Iterable<?> v), isIn(Object … v) : 주어진 iterable or 값 배열에 실제 값이 있는지 확인하고 isNotIn(Iterable<?> v), isNoIn(Object .. v)는 그 반대입니다
- isNull() : 실제 값이 null인지 확인합니다, isNotNull()은 그 반대입니다
- isSameAs(Object o) : ==비교를 사용하여 실제 값이 주어진 값과 동일한지를 확인하며, isNotSameAs(Object o)는 그 반대입니다
- as(”설명”) : Assertion을 설명하는 메서드이며 “설명”의 내용이 테스트 결과에 출력되도록 할 수 있습니다