๋ฐ์ํ
JUnit์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด์ ๋ค๋ฉด [JUnit] - JUnit5 ์์ํ๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.
JUnit ๊ธฐ๋ณธ Annotation
@BeforeAll
- ํด๋น annotation์ด ๋ฌ๋ฆฐ ๋ฉ์๋๋ ๋ชจ๋ ๋ฉ์๋๊ฐ ์คํ๋๊ธฐ ์ ์ ๊ฐ์ฅ ๋จผ์ ์คํ๋๋ค.
- ๋ฐ๋์ static ์ผ๋ก ์ ์ธ ๋์ด์ผ ํ๋ค.
- ์ด์ ์
@BeforeClass
์ ๋์ผ
@BeforeAll
static void before() {
// ๋ชจ๋ ๋ฉ์๋๊ฐ ์คํ๋๊ธฐ ์ ์คํ๋๋ค.
}
@BeforeEach
- ํด๋น annotation์ด ๋ฌ๋ฆฐ ๋ฉ์๋๋ ๊ฐ๊ฐ์ ํ ์คํธ ๋ฉ์๋๊ฐ ์คํ๋๊ธฐ ์ ์ ์คํ๋๋ค.
- ์ด์ ์
@Before
์ ๋์ผ
@BeforeEach
void before() {
// `@BeforeEach` ๊ฐ ๋ถ์ ๋ฉ์๋๋ ๊ฐ๊ฐ์ ํ
์คํธ ๋ฉ์๋๊ฐ ์คํ๋๊ธฐ ์ ์คํ๋ฉ๋๋ค.
}
@AfterAll
- ํด๋น annotation์ด ๋ฌ๋ฆฐ ๋ฉ์๋๋ ๋ชจ๋ ๋ฉ์๋๊ฐ ์คํ๋ ์ดํ์ ์คํ๋๋ค.
- ๋ฐ๋์ static์ผ๋ก ์ ์ธ ๋์ด์ผ ํ๋ค.
- ์ด์ ์
@AfterClass
์ ๋์ผ
@AfterAll
static void after() {
// ๋ชจ๋ ํ
์คํธ ๋ฉ์๋๊ฐ ์คํ๋๊ณ ๋ ๋ค ์คํ
}
@AfterEach
- ํด๋น annotation์ด ๋ฌ๋ฆฐ ๋ฉ์๋๋ ๊ฐ ํ ์คํธ ๋ฉ์๋ ์คํ ์ดํ์ ์คํ๋๋ค.
- ์ด์ ์
@After
์ ๋์ผ
@AfterEach
void after() {
// ๊ฐ ํ
์คํธ ๋ฉ์๋ ์คํ ์ดํ์ ์คํ
}
@DisplayName
- ํ ์คํธ ํด๋์ค์ ๋ฉ์๋์ ์ด๋ฆ์ ์ ์ํ ์ ์๋ค.
@Target( {ElementType.TYPE, ElementType.METHOD})
@Test
@DisplayName("ํ
์คํธ ์ด๋ฆ ์ ์")
void testTest() {
// tests
}
@Disabled
- ํด๋น annotation์ด ๋ฌ๋ฆฐ ๋ฉ์๋๋ ๋นํ์ฑํ๊ฐ ๋๋ค. (ํ ์คํธ๋ฅผ ๊ฑด๋๋)
- ์ด์ ์
@Ignore
๊ณผ ๋์ผ @Target({ElementType.TYPE, ElementType.METHOD})
@Test
@Disabled
void disableTest() {
// tests
}
Assertions
org.junit.jupiter.api.Assertions
assertEquals(expected, actual)
- expected: ํด๋น ๊ฐ์ด ๋์ค๊ธธ ๊ธฐ๋ํ๋ ๊ฐ
- actual: ์ค์ ๋ก์ง์ ์ํํด์ ๋์จ ๊ฐ
int x = 1 + 2;
assertEquals(3, x);
assertTrue
@Test
void test() {
..
assertTrue(10 > 5);
assertEquals(true, true); // (expected, actual)
}
@Test
void lambdaExpressions() {
assertTrue(Stream.of(1, 2, 3)
.stream()
.mapToInt(i -> i)
.sum() > 5 , () -> "Sum should be greater than 5");
}
assertAll
@Test
void groupAssertions() {
int[] numbers = {0, 1, 2, 3, 4};
assertAll("numbers",
() -> assertEqauls(numbers[0], 1);
() -> assertEqauls(numbers[1], 2);
() -> assertEqauls(numbers[2], 3);
);
}
๊ทธ๋ฃน ๋ด์์ ์คํจํ assertions ์ MultipleFailuresError ์ ํจ๊ป ๊ธฐ๋กํ ์ ์๋ค.
๊ทธ๋ฆฌํ์ฌ ์คํจ์ ์ ํํ ์์น๋ฅผ ํ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด๋ค ๋ณต์กํ assertions ์ ๋ง๋ค์ด๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
Assumptions
...
Exception Testing
assertThrows()
- ๋ ๊ฐ์ง ์์ธ ํ ์คํธ ๋ฐฉ๋ฒ
1. ๋ฐ์ํ ์์ธ์ ์ธ๋ถ ์ฌํญ์ ํ์ธ
@Test
void throwsException() {
Throwable exception = assertThrows(UnsupportedOperationException.class, () -> {
throw new UnsupportedOperationException("Not supported");
});
assertEquals(exception.getMessage(), "Not supported");
}
2. ์์ธ ์ ํ์ ์ ํจ์ฑ์ ๊ฒ์ฌ
@Test
void assertThrowException() {
String str = null;
assertThrows(IllegalArgumentException.class, () -> {
Integer.valueOf(str);
});
}
References
gmlwjd9405.github.io/2019/11/26/junit5-guide-basic.html
๋ฐ์ํ