junit.org/junit5/docs/current/user-guide/
Junit이란?
- 자바 프로그래밍 언어용 유닛 테스트 프레임 워크이다.
- 테스트 용도로 쓰이던 xUnit을 에릭 감마 (Erich Gamma) 와 켄트 벡(Kent Beck)이 Java에 포팅하였다.
ko.wikipedia.org/wiki/XUnitko.wikipedia.org/wiki/JUnit
Junit5의 구성
Junit5는 Junit Platform, Junit Jupiter, Junit Vintage로 구성
Junit Platform |
JVM위에서 테스트하기 위한 기본 기능을 수행 TestEngine API 가 정의 |
Junit Jupiter | Junit5 테스트를 지원하기 위한 프로그래밍 모델과 확장 모델을 제공 |
Junit Vintage | JUnit3 와 Junit4 기반 테스트를 지원한다. |
Junit5 아키텍쳐
nipafx.dev/junit-5-architecture-jupiter/
Java version
java 8 이상
사용방법
1
2
3
4
5
6
7
8
|
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.6.2</version>
<scope>test</scope>
</dependency>
|
cs |
의존성 설정
1
2
|
testRuntime("org.junit.jupiter:junit-jupiter-engine:5.6.2")
|
cs |
Annotaion
@Test | 테스트 메서드임을 알린다 |
@DisplayName | 테스트 클레스나 테스트 메서드의 커스텀 이름을 부여할 수 있다 |
@Disable |
테스트가 동작하는데 제외 한다. 이전에 @Ignore과 동일하다 |
@BeforeEach |
같은 클래스내에 test 메서드가 실행되기전에 실행된다. |
@BeforeAll |
같은 클래스 내의 모든 테스트 메서드 보다 먼저 시작된다. |
@AfterEach |
같은 클래스내에 test 메서드가 실행되고 난후 실행된다. |
@AfterAll |
같은 클래스 내의 모든 테스트 메서드 이후 시작된다. |
@Tag | 테스트 필터링을 위한 태그 선언 |
@ExtendWith | 사용자 정의 확장명을 등록하는데 사용 |
@Nested | 테스트 클래스 안에서 Inner class를 정의하여 계층화 할 수 있다. |
@fail | 테스트를 fail 시킬 수 있다 |
Assertions
Junit에서 값 검증을 위한 assertion 기능을 제공한다.
junit.org/junit5/docs/5.0.1/api/org/junit/jupiter/api/Assertions.html
assertAll()
assertAll() 을 사용하여 Assertions를 그룹화 하여 사용할 수 있다.
1
2
3
4
5
6
7
8
|
@Test
void assertAlls() {
String[] animal = new String[]{"cow", "dog"};
assertAll("animal",
() -> assertEquals(animal[0], "cow"),
() -> assertEquals(animal[1], "dog")
);
}
|
cs |
assertLinesMatch()
assertLinesMatch()를 사용하여 String에서 정규식을 적용해 특정값이 있는지 확인할 수 있다.
1
2
3
4
5
6
7
8
|
@Test
void assertAlls() {
String[] animal = new String[]{"cow", "dog"};
assertAll("animal",
() -> assertEquals(animal[0], "cow"),
() -> assertEquals(animal[1], "dog")
);
}
|
cs |
assertThrows()
exception이 발생하는지 테스트를 할 수 있다.
1
2
3
4
5
|
@Test
public void errorTest() {
assertThrows(NullPointerException.class, () -> userRepository.findById("NEMO"));
}
|
cs |
'JAVA' 카테고리의 다른 글
Java 코딩의 기술-4 (0) | 2020.12.06 |
---|---|
Java 코딩의 기술-3 (0) | 2020.12.05 |
제어문 (0) | 2020.12.05 |
연산자 (0) | 2020.11.22 |
자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.17 |