테스트 케이스 | 테스트 방법 |
---|---|
실제 값이 기대한 값과 같은지 확인 | assertEquals(expected, actual) |
값이 null이 아닌지 확인 | assertNotNull(actual) |
다음 조건이 참(true)인지 확인 | assertTure(boolean) |
모든 확인 구문 확인 | assertAll(executables…) |
예외 발생 확인 | assertThrows(expectedType, executable |
특정 시간 안에 실행이 완료되는지 확인 | assertTimeout(duration, executable) |
대안으로 AssertJ, Hemcrest, TGruth라이브러리도 사용 가능
조건을 만족하면 아래의 테스트를 수행 조건을 만족하지 않으면 바로 종료(테스트를 수행하지 않으므로 성공도 실패도 아닌 Skip 상태임)
assumingThat를 사용하여 조건과 executable을 동시에 사용할 수도 있음
@EnabledOnOS, @DisabledOnOS({OS.MAC, OS.LINUE}), @EnabledOnJre({JRE.JAVA_8, … }), @EnabledIfEnvironmentVariable(named = “”, matches = “”)
$> ./mvnw test -P ci
애노테이션을 생성해서 활용하자
매개변수를 넣어서 계속 반복할 수 있다. 하고 싶은 것은 모두 가능할 것으로 판단된다.
기본 전략은 테스트 마다 인스턴스가 생성됨 ← 테스트간의 의존성을 없애기 위함
@TestInstance(TestInstance.Lifecycle.PER_CLASS) <- 하나의 인스턴스로 진행 @BeforeAll, @AfterAll 메소드가 static일 필요가 없음
기본 전략은 각 메소드는 독립적으로 구동되어야 하므로, 순서에 크게 신경을 쓰고 있지 않음 유즈케이스 테스트를 하려면 테스트의 순서도 필요함
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Order(1), @Order(2)... 순서가 같아도 오류는 나지 않음
JUnit5에서 사용 가능
src/test/resources/junit-platform.properties
이전 JUnit4, JUnit3보다 단순해 짐
@RunWith(Runner), TestRule, MehtodRule Extension 사용법 선언적 @ExtendWith(FindSlowTestExtension.class) public class ... 코딩으로 구현 @RegisterExtension (static로 정의되어야 됨) static FindSlowTestExtension
vintage 라이브러리를 추가해야 됨