Skip to content

Using @ParameterizedClass with field injection should validate enough arguments are provided #5079

@marcphilipp

Description

@marcphilipp

Steps to reproduce

Running the following test class fails with an

ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1

@ParameterizedClass
@ValueSource(ints = 1)
class NotEnoughArgumentsForFieldsTestCase {

	@Parameter(0)
	int i;

	@Parameter(1)
	String s;

	@Test
	void test() {
		fail("should not be called");
	}
}

The error message should indicate that the failure comes from trying to inject an argument into the field annotated with @Parameter(1).

For comparison, when using constructor injection, the following exception is thrown (which is consistent with how missing arguments of @ParameterizedTest methods are handled):

ParameterResolutionException: No ParameterResolver registered for parameter [java.lang.String s] in constructor [NotEnoughArgumentsForConstructorTestCase(int,java.lang.String)

Context

  • Used versions (Jupiter/Vintage/Platform): 5.14.x
  • Build Tool/IDE: irrelevant

Deliverables

  • Throw more specific exception with a clear error message indicating the root cause

Metadata

Metadata

Assignees

Type

No fields configured for Bug.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions