만약 @Nest 어노테이션을 붙이지 않는다면, 테스트를 포함한 내부 클래스는 테스트가 실행되는 동안 실행되지 않습니다.
IDE에서 테스트를 수동으로 실행할 수는 있지만 빌드 중에는 그렇지 않습니다.
반면에 테스트를 포함한 정적 내부 클래스는 @Nest 어노테이션을 붙이면 안됩니다. JUnit5는 해당 포함 클래스의 인스턴스와 설정 및 상태를 공유하지 않습니다.
이 룰은 잘못된 @Nested 어노테이션이 있는 JUNit5 테스트 메서드를 포함하는 내부 클래스 및 정적 중첩 클래스에 알려줍니다.
Note: 이 룰은 기본 설정을 사용하는 케이스에 JUNit 5가 실행 중인 컨텍스트(예: Maven Surefire Plugin)가 정적 중첩 클래스를 실행하도록 올바르게 설정되었는지 확인하지 않습니다.
규칙을 어긴 코드
import org.junit.jupiter.api.Test;
class MyJunit5Test {
@Test
void test() { /* ... */ }
class InnerClassTest { // 규칙을 어긴 코드, @Nested 어노테이션이 빠짐
@Test
void test() { /* ... */ }
}
@Nested
static class StaticNestedClassTest { // 규칙을 어긴 코드, @Nested 어노테이션에 대해 유효하지 않은 사용
@Test
void test() { /* ... */ }
}
}
규칙을 준수한 해결책
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Nested;
class MyJunit5Test {
@Test
void test() { /* ... */ }
@Nested
class InnerClassTest {
@Test
void test() { /* ... */ }
}
static class StaticNestedClassTest {
@Test
void test() { /* ... */ }
}
}
If you like SONARKUBE, don’t forget to give me a star.