JUnit5 test classes and methods should have default package visibility
Created by: armorcodegithubpreprod[bot]
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 packagevisibility, 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 systematicallyignored by JUnit5, without a proper warning. It's not a Code Smell
but a Bug
handled by the rule S5810.
See
File Path: webgoat-integration-tests/src/test/java/org/owasp/webgoat/PasswordResetLessonTest.java:18
Mitigation: Remove this 'public' modifier.