JUnit5 내부 테스트 클래스는 @Nested 어노테이션을 붙여야 합니다.

 

만약 @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. :star2:

원문으로 바로가기

Star This Project