Junit5

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์šฉ Unit ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

๋Ÿฐํƒ€์ž„์‹œ Java 8์ด์ƒ์ด ํ•„์š”ํ•˜๋ฉฐ ์ปดํŒŒ์ผ ํƒ€์ž„์‹œ์— JAR๋กœ์„œ ๋งํฌ๋œ๋‹ค.

Spring Boot๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‚ด๋ถ€์— dependency๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

๊ตฌ์กฐ

  • JUnit Platform : ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ณ„ํš์„ ์ƒ์„ฑํ•˜๋Š” TestEngine์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

    ์ด๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐœ๊ฒฌ,์‹คํ–‰,๋ณด๊ณ ํ•œ๋‹ค.

  • JUnit Jupiter : TestEngine์˜ ์‹ค์ œ ๊ตฌํ˜„์ฒด๋Š” ๋ณ„๋„ ๋ชจ๋“ˆ์ค‘ ํ•˜๋‚˜๋กœ Juptier-API๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ์‹คํ–‰

    Jupiter API๋Š” JUnit5์— ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์šฉ API

  • JUnit Vintage : ๊ธฐ์กด ๋ฒ„์ „์œผ๋กœ ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ• ๋•Œ ์ด ๋ชจ๋“ˆ์„ ์ด์šฉ

Assertion

Assertion์€ ๊ธฐ๋ณธ์ ์ธ๊ฒƒ๋งŒ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— AssertJ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

  • assertThat / assertTrue : ์ „์ œ์กฐ๊ฑด ๊ฒ€์ฆ

  • assertAll() : ์ „์ฒด ์‹คํ–‰

  • assertThrows/assertDoesNotThrow() : ์˜ˆ์™ธ์ƒํƒœ ๊ฒ€์ฆ

  • assertTimeout() : ํƒ€

์–ด๋…ธํ…Œ์ด์…˜

โ—พ @Ignore

ํ…Œ์ŠคํŠธ๋กœ ์•ˆ์“ฐ์ด๋Š” ํด๋ž˜์Šค

ํ…Œ์ŠคํŠธ๋‚ด ์ค‘๋ณต ์ฝ”๋“œ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด ํด๋ž˜์Šค ์ƒ์†์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

โ—พ @Test

ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์ž„์„ ์•Œ๋ฆฌ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

โ—พ @ParameterizedTest

๋งค๊ฐœ ๋ณ€์ˆ˜ํ™” ๋œ ํ…Œ์ŠคํŠธ

โ—พ @TestFactory

๋™์  ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ํŒฉํ† ๋ฆฌ

โ—พ @DisplayName

ํ•ด๋‹น ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค or ๋ฉ”์„œ๋“œ์˜ console์— ๋ณด์—ฌ์ง€๋Š” ์ด๋ฆ„์„ ์ •์˜

โ—พ @DisplayNameGenration

ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋ฆ„์„ ์„ ์–ธ

โ—พ @Disabled

ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค or ๋ฉ”์„œ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”

โ—พ @BeforeEach / @BeforeAll

@Test, @RepeatedTest, @Parameterized, @TestFactory๊ฐ€ ๋ถ™์€ ๋ฉ”์„œ๋“œ ์ „์— ์‹คํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ

โ—พ @AfterEach / @AfterAll

@Test, @RepeatedTest, @Parameterized, @TestFactory๊ฐ€ ๋ถ™์€ ๋ฉ”์„œ๋“œ ํ›„์— ์‹คํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ

โ—พ @Nested

ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์•ˆ์—์„œ ๋‚ด๋ถ€ ํด๋ ˆ์Šค๋ฅผ ์ •์˜

โ—พ @Repeated Test

๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ํ…œํ”Œ๋ฆฟ์ž„์„ ์•Œ๋ฆผ

โ—พ @Tag

ํ•„ํ„ฐ๋ง์„ ์œ„ํ•œ ํƒœ๊ทธ

โ—พ @TestInstance(TestInstance.LifeCycle.PER_CLASS)

ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

โ—พ @TestMethodOrder(MethodOrderer.OrderAnnotation.class)

  • @Order() : ๋ฉ”์„œ๋“œ๊ฐ„ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋”ฐ.


Refernce

https://reiphiel.tistory.com/entry/junit5-features

Last updated