์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ฉ Unit ํ
์คํธ ํ๋ ์์ํฌ
๋ฐํ์์ Java 8์ด์์ด ํ์ํ๋ฉฐ ์ปดํ์ผ ํ์์์ JAR๋ก์ ๋งํฌ๋๋ค.
Spring Boot๋ฅผ ์ด์ฉํ๋ฉด ๋ด๋ถ์ dependency๊ฐ ํฌํจ๋์ด ์๋ค.
JUnit Platform : ํ
์คํธ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๊ณํ์ ์์ฑํ๋ TestEngine์ธํฐํ์ด์ค๋ฅผ ๊ฐ๊ณ ์๋ค.
์ด๋ฅผ ํตํด ํ
์คํธ๋ฅผ ๋ฐ๊ฒฌ,์คํ,๋ณด๊ณ ํ๋ค.
JUnit Jupiter : TestEngine์ ์ค์ ๊ตฌํ์ฒด๋ ๋ณ๋ ๋ชจ๋์ค ํ๋๋ก Juptier-API๋ฅผ ์ด์ฉํ ํ
์คํธ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์คํ
Jupiter API๋ JUnit5์ ์๋กญ๊ฒ ์ถ๊ฐ๋ ํ
์คํธ ์ฝ๋์ฉ API
JUnit Vintage : ๊ธฐ์กด ๋ฒ์ ์ผ๋ก ์์ฑํ ํ
์คํธ ์ฝ๋๋ฅผ ์คํํ ๋ ์ด ๋ชจ๋์ ์ด์ฉ
Assertion์ ๊ธฐ๋ณธ์ ์ธ๊ฒ๋ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ AssertJ์ ๊ฐ์ ๊ฒ๋ค์ ์ถ๊ฐ๋ก ์ฌ์ฉํ ์๋ ์๋ค.
assertThat / assertTrue : ์ ์ ์กฐ๊ฑด ๊ฒ์ฆ
assertAll() : ์ ์ฒด ์คํ
assertThrows/assertDoesNotThrow() : ์์ธ์ํ ๊ฒ์ฆ
์ด๋
ธํ
์ด์
ํ
์คํธ๋ก ์์ฐ์ด๋ ํด๋์ค
ํ
์คํธ๋ด ์ค๋ณต ์ฝ๋์ ๊ฑฐ๋ฅผ ์ํด ํด๋์ค ์์์ ์ด์ฉํ์ฌ ๋ง๋ค๋ ์ฌ์ฉํด์ฃผ์ด์ผํ๋ค.
ํ
์คํธ ๋ฉ์๋ ์์ ์๋ฆฌ๋ ์ด๋
ธํ
์ด์
โพ @ParameterizedTest
๋งค๊ฐ ๋ณ์ํ ๋ ํ
์คํธ
โพ @TestFactory
๋์ ํ
์คํธ๋ฅผ ์ํ ํ
์คํธ ํฉํ ๋ฆฌ
โพ @DisplayName
ํด๋น ํ
์คํธ ํด๋์ค or ๋ฉ์๋์ console์ ๋ณด์ฌ์ง๋ ์ด๋ฆ์ ์ ์
โพ @DisplayNameGenration
ํ
์คํธ ํด๋์ค์ ๋ํด ์ฌ์ฉ์ ์ ์ ์ด๋ฆ์ ์ ์ธ
ํ
์คํธ ํด๋์ค or ๋ฉ์๋๋ฅผ ๋นํ์ฑํ
โพ @BeforeEach / @BeforeAll
@Test, @RepeatedTest, @Parameterized, @TestFactory๊ฐ ๋ถ์ ๋ฉ์๋ ์ ์ ์คํ๋๋ ํ
์คํธ
โพ @AfterEach / @AfterAll
@Test, @RepeatedTest, @Parameterized, @TestFactory๊ฐ ๋ถ์ ๋ฉ์๋ ํ์ ์คํ๋๋ ํ
์คํธ
ํ
์คํธ ํด๋์ค์์์ ๋ด๋ถ ํด๋ ์ค๋ฅผ ์ ์
โพ @Repeated Test
๋ฐ๋ณต ํ
์คํธ๋ฅผ ์ํ ํ
์คํธ ํ
ํ๋ฆฟ์์ ์๋ฆผ
ํํฐ๋ง์ ์ํ ํ๊ทธ
โพ @TestInstance(TestInstance.LifeCycle.PER_CLASS)
ํ
์คํธ ๋ฉ์๋๊ฐ์ ์ํ๋ฅผ ์ ์งํด์ฃผ๋ ์ด๋
ธํ
์ด์
โพ @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Order() : ๋ฉ์๋๊ฐ ์์๋ฅผ ์ง์ ํด์ค ์ ์๋ฐ.
https://reiphiel.tistory.com/entry/junit5-features