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๊ฐ ์๋ค.
TestInfoParameterResolver
TestInfo
Resolver์ด๋ค.
TestInfo
๊ฐ์ฒด๋ ํ
์คํธ ํด๋์ค, ๋ฉ์๋๋ช
, ๋์คํ๋ ์ด๋ช
๊ณผ ๊ฐ์ ํ์ฌ ํ
์คํธ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
RepetitionInfoParameterResolver
๋ฐ๋ณต ์คํ ๊ฐ๋ฅํ ๋ฉ์๋(@RepeatedTest
,@BeforeEach
,@AfterEach
)์ ๊ฐ์ ๋ฉ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ RepetionInfo
๊ฐ์ฒด์ ๋ํ Resolver์ด๋ค.
TestReporterParameterResolver
ํ์ฌ ์คํํ๋ ํ
์คํธ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ํ์ํ ์ ์๋ TestReporter
๊ฐ์ฒด์ ๋ํ Resolver์ด๋ค.
TestInfo
๋ฉ์๋๋ช
ํ์
์ค๋ช
getDisplayName()
String
@DisplayName ๊ฐ์ด๋ ๋์ผ
getTags()
Set<String>
@Tag ๋ฐฐ์ด ๊ฐ
getTestClass()
Optional<Class<?>>
ํจํค์ง + ํ ์คํธ ํด๋์ค๋ช
getTestMethod()
Optional<Method>
ํจํค์ง๋ช + ํ ์คํธ ํด๋์ค๋ช + ํ ์คํธ ๋ฉ์๋
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