Rule S3577 checks a name of the test to comply with naming rules. It checks for a name, if a class contains a test method. JUnit 5 introduced nested classes that should be excluded from this rule as they do not need to be searched by surefire or failsafe or other tests executors.
Example of false positive:
class JunitNestedTest {
@org.junit.jupiter.api.Nested
class Positive {
@org.junit.jupiter.api.Test
void foo() {}
}
}
class JunitNested { // Noncompliant
@org.junit.jupiter.api.Nested
class Negative {
@org.junit.jupiter.api.Test
void foo() {}
}
}
This will report on Positive
class, but shouldn’t. I will not report on JunitNested
class, but it should.
I’ve started to work on a bug fix. You can see a WIP here: https://github.com/SonarSource/sonar-java/compare/master...wavesoftware:bugfix/s3577-junit5-nested
Affected version: sonar-java @ master
Cheers!