Inspectopedia
 
2024.3

JUnit malformed declaration

Error
Reliability
New
Last modified: 03 December 2024

Reports JUnit test member declarations that are malformed and are likely not recognized by the JUnit test framework. The following problems are reported by this inspection:

  • Test classes that can't be constructed

  • Fields annotated by @RegisterExtension that have the wrong type or are not declared as static when it is required

  • Static or private inner classes annotated with @Nested

  • Parameterized tests that are defined without a source

  • Parameterized tests with a @MethodSource that has an unknown, non-static or no-arg target

  • Mismatched types between parameterized test method parameter and the specified @ValueSource or @EnumSource values

  • Tests that are annotated by more than one of @Test, @ParameterizedTest or @RepeatedTest

  • setup() or tearDown() methods that are not public, whose return type is not void or take arguments

  • suite() methods that are private, take arguments or are not static

  • Methods annotated by @BeforeClass, @AfterClass, @BeforeAll or @AfterAll that are not public, not static, whose return type is not void or do not have a valid parameter list

  • Methods annotated by @Before, @After, @BeforeEach or @AfterEach that are not public, whose return type is not void or take arguments

  • Injected RepetitionInfo in @BeforeAll or @AfterAll methods

  • Injected RepetitionInfo in @BeforeEach or @AfterEach methods that are used by @Test annotated tests

  • Fields and methods annotated by @DataPoint or @DataPoints that are not public or not static

  • Fields and methods annotated by @Rule that are not public or not a subtype of TestRule or MethodRule

  • Fields and methods annotated by @ClassRule that are not public, not static or not a subtype of TestRule

  • Methods inside a subclass of TestCase with a test prefix that are not public, whose return type is not void, take arguments or are static

  • Methods annotated by @Test that are not public, whose return type is not void, take arguments or are static

Note that in Kotlin, suspending functions do have arguments and a non-void return type. Therefore, they also will not be executed by the JUnit test runner. This inspection will also report about this problem.

Malformed @Before method example:

After the quick-fix is applied:

Missing method source example (Kotlin):

After the quick-fix is applied:

Use the inspection options to specify annotations. Any parameter annotated with one of these annotations will not be reported.