JUnit5 test classes and methods should generally have package visibility. To fix this issue, change their visibility to the default package visibility. == Why is this an issue? JUnit5 is more tolerant regarding the visibility of test classes and methods than JUnit4, which required everything to be `public`. Test classes and methods can have any visibility except `private`. It is however recommended to use the default package visibility to improve readability. [quote, JUnit5 User Guide] ____ Test classes, test methods, and lifecycle methods are not required to be `public`, but they must not be `private`. It is generally recommended to omit the public modifier for test classes, test methods, and lifecycle methods unless there is a technical reason for doing so – for example, when a test class is extended by a test class in another package. Another technical reason for making classes and methods public is to simplify testing on the module path when using the Java Module System. ____ === What is the potential impact? The code will be non-conventional and readability can be slightly affected. === Exceptions This rule does not raise an issue when the visibility is set to `private`, because `private` test methods and classes are systematically ignored by JUnit5, without a proper warning. In this case, there is also an impact on reliability and so it is handled by the rule https://rules.sonarsource.com/java/RSPEC-5810/[S5810]. == How to fix it You can simply change the visibility by removing the `public` or `protected` keywords. === Code examples ==== Noncompliant code example [source,java,diff-id=1,diff-type=noncompliant] ---- import org.junit.jupiter.api.Test; public class MyClassTest { // Noncompliant - modifier can be removed @Test protected void test() { // Noncompliant - modifier can be removed // ... } } ---- ==== Compliant solution [source,java,diff-id=1,diff-type=compliant] ---- import org.junit.jupiter.api.Test; class MyClassTest { @Test void test() { // ... } } ---- == Resources === Documentation * https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods[JUnit5 User Guide: Test Classes and Methods] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Remove this '[public|protected]' modifier. === Highlighting wrong visibility modifier of the test method/class endif::env-github,rspecator-view[]