in junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/EmptyArgumentsProvider.java [34:64]
public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
Method testMethod = context.getRequiredTestMethod();
Class<?>[] parameterTypes = testMethod.getParameterTypes();
Preconditions.condition(parameterTypes.length > 0, () -> String.format(
"@EmptySource cannot provide an empty argument to method [%s]: the method does not declare any formal parameters.",
testMethod.toGenericString()));
Class<?> parameterType = parameterTypes[0];
if (String.class.equals(parameterType)) {
return Stream.of(arguments(""));
}
if (List.class.equals(parameterType)) {
return Stream.of(arguments(Collections.emptyList()));
}
if (Set.class.equals(parameterType)) {
return Stream.of(arguments(Collections.emptySet()));
}
if (Map.class.equals(parameterType)) {
return Stream.of(arguments(Collections.emptyMap()));
}
if (parameterType.isArray()) {
Object array = Array.newInstance(parameterType.getComponentType(), 0);
return Stream.of(arguments(array));
}
// else
throw new PreconditionViolationException(
String.format("@EmptySource cannot provide an empty argument to method [%s]: [%s] is not a supported type.",
testMethod.toGenericString(), parameterType.getName()));
}