7.1 @Suite ์ฃผ์
๊ทธ๋ฆฌ๊ณ ๋ ์์ฃผ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง ์ฃผ์. ์ฌ์ฉํ์ง ์๋๋ผ๋ ํ์คํ ํ ์คํธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฑฐ๊ธฐ์ ์ฐ์ฌ์ง ๋ด์ฉ์ ์ ์ด๋ ์ผ๋ฐ์ ์ธ ์ฉ์ด๋ก ์ดํดํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค.
ํ
์คํธ๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค. ์ด์ ๋ํ ํน๋ณํ ์ฃผ์์ด ์์ต๋๋ค @Suite
. ์:
@Suite @SuiteDisplayName("JUnit Platform Suite Demo") @SelectPackages("com.codegym.test") @IncludeClassNamePatterns(".*Tests")
class SuiteDemo {
}
์ด ๊ฒฝ์ฐ @Suite ์ฃผ์์ ๋ค๋ฅธ ์ฃผ์๊ณผ ์์ ์ด๋ฃน๋๋ค.
SuiteDisplayName
โ ๋ก๊ทธ์ ํ ์คํธ ๊ทธ๋ฃน์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.SelectPackages
- ํ ์คํธ ํด๋์ค๋ฅผ ์ฐพ์ ํจํค์ง ๋ชฉ๋ก์ ์ค์ ํฉ๋๋ค.IncludeClassNamePatterns
โ ํ ์คํธ ํด๋์ค ์ด๋ฆ์ ํจํด์ ์ค์ ํฉ๋๋ค.
์ ๊ทธ๋ฐ ์ด๋ ค์์ด ์์ต๋๊น? ํ๋ก์ ํธ์ ๋ชจ๋ ํ ์คํธ๊ฐ 50์๊ฐ ๋์ ์คํ๋๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ์ปค๋ฐ ํ์ ์คํํ๋ ๊ฒ์ ๋งค์ฐ ๋น์๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ณ๋์ ํ ์คํธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๊ณ ํจ์ฌ ๋ ์ ์ฐํ ๋ฐฉ์์ผ๋ก ํ ์คํธ๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค.
7.2 @Order ์ฃผ์
๋ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์ฃผ์์ @TestMethodOrder
. ํ
์คํธ ํด๋์ค์์ ํ
์คํธ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ์์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๋ฉ์๋ ํธ์ถ์ด ์๋ก ์ํฅ์ ์ฃผ์ง๋ง ํน์ ์์๋ก ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํด์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ ๋ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ๊ฝค ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
๋จผ์ ํธ์ถํ ๋ฉ์๋๋ฅผ ์ํ๋ฒณ์์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค .
@TestMethodOrder(MethodOrderer.MethodName.class)
public class AlphanumericOrderUnitTest {
}
๋์งธ, ๊ฐ ๋ฉ์๋๋ ์์์ ํจ๊ป ํน๋ณํ ์ฃผ์์ ๊ฐ์ง ์ ์์ต๋๋ค.
@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {
@Test @Order(1)
public void firstTest() {
}
@Test @Order(2)
public void secondTest() {
}
}
๋๋ ํ ์คํธ๊ฐ ํธ์ถ๋๋ ์์๋ฅผ ์ง์ ํ๋ ๋ณ๋์ ํด๋์ค๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค.
@TestMethodOrder(CustomOrder.class)
public class CustomOrderUnitTest {
}
//sort method names alphabetically, but ignoring case
public class CustomOrder implements MethodOrderer {
public void orderMethods(MethodOrdererContext context) {
context.getMethodDescriptors().sort(
(MethodDescriptor m1, MethodDescriptor m2)->
m1.getMethod().getName().compareToIgnoreCase(m2.getMethod().getName()));
}
}
7.3 @DisplayName ์ฃผ์
๋ง์ง๋ง์ผ๋ก ๊ฐ ํ
์คํธ์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค. ํ
์คํธ๊ฐ ๋ง๊ณ ํ
์คํธ์ ํน์ ์๋๋ฆฌ์ค(ํ์ ์งํฉ)๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ ํธ๋ฆฌํ ์ ์์ต๋๋ค. ์ด์ ๋ํ ํน๋ณํ ์ฃผ์์ด ์์ต๋๋ค @DisplayName
.
์:
@DisplayName("Friendly name for the test")
public class DisplayNameCustomTest {
@Test @DisplayName("Input Validation")
void inputData() {
}
@DisplayName("Checking critical situations") @Test
void criticalCases() {
}
}
ํ ์คํธ ์์๋ฅผ ์ค์ ํ๋ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๊ธฐ์์ ํ ์คํธ ์ด๋ฆ๊ณผ ํ ์คํธ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ํน์ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์:
@DisplayNameGeneration(DisplayNameGeneratorUnitTest.ReplaceCamelCase.class)
class DisplayNameGeneratorUnitTest {
@Test
void camelCaseName() {
}
static class ReplaceCamelCase extends DisplayNameGenerator.Standard {
@Override
public String generateDisplayNameForClass(Class testClass) { return super.generateDisplayNameForClass(testClass).toUpperCase(); } }
}
์ผ๋ง๋ ์ฌ์ด์ง ๋ณด์ธ์ :)
GO TO FULL VERSION