Junit5
Junit์ Java์ ๋จ์ ํ ์คํ ๋๊ตฌ์ด๋ค.
๋จ์ ํ ์คํธ Framework์ค ํ๋
๋จ์ ๋ฌธ์ผ๋ก Test Case ์ํ๊ฒฐ๊ณผ๋ฅผ ํ๋ณ
Annotation์ผ๋ก ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
JUnit5
Junit5๋ ์ด์ ๋ฒ์ ๊ณผ ๋ค๋ฅด๊ฒ 3๊ฐ์ ์๋ธ ํ๋ก์ ํธ ๋ชจ๋๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
JUnit Platform : TestEngine API, Console Launcher, JUnit 4 based Runner ๋ฑ ํฌํจ
JUnit Jupiter : TestEngine API ๊ตฌํ์ฒด๋ก JUnit 5 ๊ตฌํ
JUnit Vintage : TestEngine API ๊ตฌํ์ฒด๋ก JUnit 3, 4 ๊ตฌํ
Junit5์์ JUnit Vintage ๋ชจ๋์ ํฌํจํ๊ณ ์์ด JUnit 3,4๋ ์ฌ์ฉํ ์ ์์ง๋ง, ์๋ฒฝํ๊ฒ ์ง์ํด์ฃผ๋ ๊ฒ์ ์๋๋ค.
Dependencies
spring boot 2.2.0 ์ดํ ๋ฒ์ ์์๋ Junit5๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๋ณ๊ฒฝ๋์๋ค. Junit5๋ Java8 ๋ถํฐ ์ง์ํ๋ฉฐ, ์ด์ ๋ฒ์ ์ผ๋ก ์์ฑ๋ ํ ์คํธ ์ฝ๋์ฌ๋ ์ปดํ์ผ์ด ์ง์๋๋ค.
SpringBoot 2.2.0 ์ด์ ๋ฒ์ ์์ junit5 ์ค์
maven
gradle
ํ
์คํธ๋ฅผ ๊ตฌ์ฑํ๊ณ , ํ๋ ์์ํฌ๋ฅผ ์์ํ๊ธฐ ์ํ ์ด๋
ธํ
์ด์
์ ์ง์ํ๋ค. ๋๋ถ๋ถ ์ด๋
ธํ
์ด์
์ junit-jupiter-api
๋ชจ๋์ org.junit.jupiter.api
ํจํค์ง์์ ์กด์ฌํ๋ค.
์ฉ์ด
ํ
์คํธ ํด๋์ค
์ต์์ ํด๋์ค, ์คํํฑ ๋ฉค๋ฒ ํด๋์ค, @Nested
ํด๋์ค์ ์ ์ด๋ ํ๊ฐ์ @Test
์ด๋
ธํ
์ด์
์ด ๋ฌ๋ฆฐ ํ
์คํธ ๋ฉ์๋๊ฐ ํฌํจ๋์ด์๋ ํด๋์ค๋ฅผ ๋งํ๋ค. ํ
์คํธ ํด๋์ค๋ abstract
์ด๋ฉด ์๋๊ณ , ํ๋์ ์์ฑ์๊ฐ ์กด์ฌํด์ผํ๋ค.
ํ
์คํธ ๋ฉ์๋
์๋ ๋ฉํ ์ด๋
ธํ
์ด์
์ด ๋ถ์ฌ์ง ๋ฉ์๋๋ฅผ ๋งํ๋ฉฐ, ํ
์คํธ ๋ฉ์๋๋ ํ
์คํธ ํ ํด๋์ค, ์์ํ ๋ถ๋ชจ ํด๋์ค, ์ธํฐํ์ด์ค์ ์ ์ธ๋๋ค. abstract
๋ฅผ ์ ์ธํด์๋ ์๋๋ฉฐ, ์ด๋ ํ ๊ฐ๋ ๋ฐํ๋๋ฉด ์๋๋ค.
@Test
@RepetedTest
@ParameterizedTest
@TestFactory
@TestTemplate
๋ผ์ดํ ์ฌ์ดํด ๋ฉ์๋
์๋ ๋ฉํ ์ด๋
ธํ
์ด์
์ด ๋ถ์ฌ์ง ๋ฉ์๋๋ฅผ ๋งํ๋ฉฐ, ํ
์คํธ ๋ฉ์๋๋ ํ
์คํธ ํ ํด๋์ค, ์์ํ ๋ถ๋ชจ ํด๋์ค, ์ธํฐํ์ด์ค์ ์ ์ธ๋๋ค. abstract
๋ฅผ ์ ์ธํด์๋ ์๋๋ฉฐ, ์ด๋ ํ ๊ฐ๋ ๋ฐํ๋๋ฉด ์๋๋ค.
@BeforeAll
@AfterAll
@BeforeEach
@AfterEach
Dependency Injection
Junit Jupiter์ ์ฃผ๋ ๋ณํ๋ก ํ ์คํธ ํด๋์ค์ ์์ฑ์ ๋ฉ์๋๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง ์ ์๊ฒ ๋์๋ค. ์ด๋ ์ฝ๋์ ์ ์ฐํจ์ด ์ฆ๊ฐํ ๋ฟ๋ง ์๋๋ผ, ์์กด์ฑ ์ฃผ์ ๋ํ ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
ParameterResolver
๋ ์คํ ์๊ฐ ๋์์ ๋์ ์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ํด์ํ ์ ์๋ API๋ฅผ ์ ์ํ๊ณ ์๋ค. ํ์ฌ ์๋์ผ๋ก ๋ฑ๋ก๋๋ 3๊ฐ์ Resolver๊ฐ ์๋ค.
ParmeterResolver | ์ค๋ช |
---|---|
TestInfoParameterResolver |
|
RepetitionInfoParameterResolver | ๋ฐ๋ณต ์คํ ๊ฐ๋ฅํ ๋ฉ์๋( |
TestReporterParameterResolver | ํ์ฌ ์คํํ๋ ํ
์คํธ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ํ์ํ ์ ์๋ |
TestInfo
๋ฉ์๋๋ช | ํ์ | ์ค๋ช |
getDisplayName() |
| @DisplayName ๊ฐ์ด๋ ๋์ผ |
getTags() |
| @Tag ๋ฐฐ์ด ๊ฐ |
getTestClass() |
| ํจํค์ง + ํ ์คํธ ํด๋์ค๋ช |
getTestMethod() |
| ํจํค์ง๋ช + ํ ์คํธ ํด๋์ค๋ช + ํ ์คํธ ๋ฉ์๋ |
RepetitionInfo
๋ฉ์๋๋ช / ๋ณ์๋ช | ํ์ | ์ค๋ช |
getCurrentRepetition() | int | ํ์ฌ ๋ฐ๋ณต ํ์ |
getTotalRepetitions() | int | ์ด ๋ฐ๋ณต ํ์ |
DISPLAY_NAME_PLACEHOLDER | String | @DisplayName ๊ฐ |
SHORT_DISPLAY_NAME | String | ๋ฐ๋ณตํ ๋ ๋ํ๋๋ ํ ์คํธ๋ช ๊ธฐ๋ณธ๊ฐ : "repetition " + ํ์ฌ ๋ฐ๋ณต ํ์ + " of " + ์ด ๋ฐ๋ณต ํ์ |
LONG_DISPLAY_NAME | String | DISPLAY_NAME_PLACEHOLDER + " :: " + SHORT_DISPLAY_NAME |
TOTAL_REPETITIONS_PLACEHOLDER | String | ํ์ฌ ๋ฐ๋ณต ํ์ |
CURRENT_REPETITION_PLACEHOLDER | String | ์ด ๋ฐ๋ณต ํ์ |
TestInfoParameterResolver
Last updated