JUnit5 is more tolerant regarding the visibilities of Test classes and methods than JUnit4, which required everything to be public. JUnit5 supports default package, public and protected visibility, even if it is recommended to use the default package visibility, which improves the readability of code.
But JUnit5 ignores without any warning:
@Nested classes with private visibility (the entire nested test suite is silently skipped)
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
class MyClassTest {
@Test
private void test1() { // Noncompliant - ignored by JUnit5
// ...
}
@Test
static void test2() { // Noncompliant - ignored by JUnit5
// ...
}
@Test
boolean test3() { // Noncompliant - ignored by JUnit5
// ...
}
@Nested
private class NestedTests { // Noncompliant - entire nested suite ignored by JUnit5
@Test
void test() {
// ...
}
}
}
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
class MyClassTest {
@Test
void test1() {
// ...
}
@Test
void test2() {
// ...
}
@Test
void test3() {
// ...
}
@Nested
class NestedTests { // Compliant - private modifier removed
@Test
void test() {
// ...
}
}
}