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.