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} .