Skip to content

Commit cc13a7b

Browse files
juliette-derancourtJuliette de Rancourt
authored andcommitted
Don't wrap arguments with Named in ParameterizedTestExtension
1 parent 93327df commit cc13a7b

File tree

3 files changed

+22
-22
lines changed

3 files changed

+22
-22
lines changed

junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestExtension.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContex
9292
.flatMap(provider -> arguments(provider, extensionContext))
9393
.map(Arguments::get)
9494
.map(arguments -> consumedArguments(arguments, methodContext))
95-
.map(this::namedArguments)
9695
.map(arguments -> createInvocationContext(formatter, methodContext, arguments))
9796
.peek(invocationContext -> invocationCount.incrementAndGet())
9897
.onClose(() ->
@@ -123,7 +122,7 @@ private ExtensionContext.Store getStore(ExtensionContext context) {
123122
}
124123

125124
private TestTemplateInvocationContext createInvocationContext(ParameterizedTestNameFormatter formatter,
126-
ParameterizedTestMethodContext methodContext, List<Named<Object>> arguments) {
125+
ParameterizedTestMethodContext methodContext, Object[] arguments) {
127126
return new ParameterizedTestInvocationContext(formatter, methodContext, arguments);
128127
}
129128

@@ -154,16 +153,4 @@ private Object[] consumedArguments(Object[] arguments, ParameterizedTestMethodCo
154153
return arguments.length > parameterCount ? Arrays.copyOf(arguments, parameterCount) : arguments;
155154
}
156155

157-
@SuppressWarnings("unchecked")
158-
private List<Named<Object>> namedArguments(Object[] arguments) {
159-
return Arrays.stream(arguments) //
160-
.map(argument -> {
161-
if (argument instanceof Named) {
162-
return (Named<Object>) argument;
163-
}
164-
return Named.of(StringUtils.nullSafeToString(argument), argument);
165-
}) //
166-
.collect(Collectors.toList());
167-
}
168-
169156
}

junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestInvocationContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@ class ParameterizedTestInvocationContext implements TestTemplateInvocationContex
2525

2626
private final ParameterizedTestNameFormatter formatter;
2727
private final ParameterizedTestMethodContext methodContext;
28-
private final List<Named<Object>> arguments;
28+
private final Object[] arguments;
2929

3030
ParameterizedTestInvocationContext(ParameterizedTestNameFormatter formatter,
31-
ParameterizedTestMethodContext methodContext, List<Named<Object>> arguments) {
31+
ParameterizedTestMethodContext methodContext, Object[] arguments) {
3232
this.formatter = formatter;
3333
this.methodContext = methodContext;
3434
this.arguments = arguments;
3535
}
3636

3737
@Override
3838
public String getDisplayName(int invocationIndex) {
39-
return this.formatter.format(invocationIndex, this.arguments.toArray());
39+
return this.formatter.format(invocationIndex, this.arguments);
4040
}
4141

4242
@Override

junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestParameterResolver.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,24 @@
1212

1313
import java.lang.reflect.Executable;
1414
import java.lang.reflect.Method;
15-
import java.util.List;
15+
import java.util.Arrays;
1616

1717
import org.junit.jupiter.api.Named;
1818
import org.junit.jupiter.api.extension.ExtensionContext;
1919
import org.junit.jupiter.api.extension.ParameterContext;
2020
import org.junit.jupiter.api.extension.ParameterResolutionException;
2121
import org.junit.jupiter.api.extension.ParameterResolver;
22+
import org.junit.platform.commons.util.StringUtils;
2223

2324
/**
2425
* @since 5.0
2526
*/
2627
class ParameterizedTestParameterResolver implements ParameterResolver {
2728

2829
private final ParameterizedTestMethodContext methodContext;
29-
private final List<Named<Object>> arguments;
30+
private final Object[] arguments;
3031

31-
ParameterizedTestParameterResolver(ParameterizedTestMethodContext methodContext, List<Named<Object>> arguments) {
32+
ParameterizedTestParameterResolver(ParameterizedTestMethodContext methodContext, Object[] arguments) {
3233
this.methodContext = methodContext;
3334
this.arguments = arguments;
3435
}
@@ -56,13 +57,25 @@ public boolean supportsParameter(ParameterContext parameterContext, ExtensionCon
5657
}
5758

5859
// Else fallback to behavior for parameterized test methods without aggregators.
59-
return parameterIndex < this.arguments.size();
60+
return parameterIndex < this.arguments.length;
6061
}
6162

6263
@Override
6364
public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
6465
throws ParameterResolutionException {
65-
return this.methodContext.resolve(parameterContext, this.arguments.stream().map(Named::getPayload).toArray());
66+
return this.methodContext.resolve(parameterContext, extractPayloads(this.arguments));
67+
}
68+
69+
@SuppressWarnings("unchecked")
70+
private Object[] extractPayloads(Object[] arguments) {
71+
return Arrays.stream(arguments) //
72+
.map(argument -> {
73+
if (argument instanceof Named) {
74+
return ((Named<Object>) argument).getPayload();
75+
}
76+
return argument;
77+
}) //
78+
.toArray();
6679
}
6780

6881
}

0 commit comments

Comments
 (0)