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.
Noncompliant Code Example
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
import org.junit.jupiter.api.Test;
class MyClassTest {
@Test
void test() {
// ...
}
}
Exceptions
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} .
See