JUnit5 is more tolerant regarding the visibilities of Test classes than JUnit4, which required everything to be public.
In this context, JUnit5 test classes can have any visibility but private, however, it is recommended to use the default package
visibility, which improves readability of code.
import org.junit.jupiter.api.Test;
public class MyClassTest { // Noncompliant - modifier can be removed
@Test
protected void test() { // Noncompliant - modifier can be removed
// ...
}
}
import org.junit.jupiter.api.Test;
class MyClassTest {
@Test
void test() {
// ...
}
}
This rule does not raise an issue about private visibility, because private test methods and classes are systematically
ignored by JUnit5, without a proper warning. It's not a Code Smell but a Bug handled by the rule {rule:java:S5810} .