rspec/rules/S5786/java/rule.adoc

65 lines
1.4 KiB
Plaintext
Raw Normal View History

== Why is this an issue?
2021-04-28 16:49:39 +02:00
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.
=== Noncompliant code example
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
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
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
import org.junit.jupiter.api.Test;
class MyClassTest {
@Test
void test() {
// ...
}
}
----
=== Exceptions
2021-04-28 16:49:39 +02:00
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 S5810 .
== Resources
2021-04-28 16:49:39 +02:00
* https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods[JUnit 5 Test Classes and Methods]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Remove this '[public|protected]' modifier.
=== Highlighting
wrong visibility modifier of the test method/class
endif::env-github,rspecator-view[]