Skip to content

Commit ca0f46e

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

File tree

3 files changed

+21
-27
lines changed

3 files changed

+21
-27
lines changed

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

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,9 @@
1616

1717
import java.lang.reflect.Method;
1818
import java.util.Arrays;
19-
import java.util.List;
2019
import java.util.concurrent.atomic.AtomicLong;
21-
import java.util.stream.Collectors;
2220
import java.util.stream.Stream;
2321

24-
import org.junit.jupiter.api.Named;
2522
import org.junit.jupiter.api.extension.ExtensionContext;
2623
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
2724
import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
@@ -34,7 +31,6 @@
3431
import org.junit.platform.commons.util.ExceptionUtils;
3532
import org.junit.platform.commons.util.Preconditions;
3633
import org.junit.platform.commons.util.ReflectionUtils;
37-
import org.junit.platform.commons.util.StringUtils;
3834

3935
/**
4036
* @since 5.0
@@ -92,7 +88,6 @@ public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContex
9288
.flatMap(provider -> arguments(provider, extensionContext))
9389
.map(Arguments::get)
9490
.map(arguments -> consumedArguments(arguments, methodContext))
95-
.map(this::namedArguments)
9691
.map(arguments -> createInvocationContext(formatter, methodContext, arguments))
9792
.peek(invocationContext -> invocationCount.incrementAndGet())
9893
.onClose(() ->
@@ -123,7 +118,7 @@ private ExtensionContext.Store getStore(ExtensionContext context) {
123118
}
124119

125120
private TestTemplateInvocationContext createInvocationContext(ParameterizedTestNameFormatter formatter,
126-
ParameterizedTestMethodContext methodContext, List<Named<Object>> arguments) {
121+
ParameterizedTestMethodContext methodContext, Object[] arguments) {
127122
return new ParameterizedTestInvocationContext(formatter, methodContext, arguments);
128123
}
129124

@@ -154,16 +149,4 @@ private Object[] consumedArguments(Object[] arguments, ParameterizedTestMethodCo
154149
return arguments.length > parameterCount ? Arrays.copyOf(arguments, parameterCount) : arguments;
155150
}
156151

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-
169152
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import java.util.List;
1616

17-
import org.junit.jupiter.api.Named;
1817
import org.junit.jupiter.api.extension.Extension;
1918
import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
2019

@@ -25,18 +24,18 @@ class ParameterizedTestInvocationContext implements TestTemplateInvocationContex
2524

2625
private final ParameterizedTestNameFormatter formatter;
2726
private final ParameterizedTestMethodContext methodContext;
28-
private final List<Named<Object>> arguments;
27+
private final Object[] arguments;
2928

3029
ParameterizedTestInvocationContext(ParameterizedTestNameFormatter formatter,
31-
ParameterizedTestMethodContext methodContext, List<Named<Object>> arguments) {
30+
ParameterizedTestMethodContext methodContext, Object[] arguments) {
3231
this.formatter = formatter;
3332
this.methodContext = methodContext;
3433
this.arguments = arguments;
3534
}
3635

3736
@Override
3837
public String getDisplayName(int invocationIndex) {
39-
return this.formatter.format(invocationIndex, this.arguments.toArray());
38+
return this.formatter.format(invocationIndex, this.arguments);
4039
}
4140

4241
@Override

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

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
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;
@@ -26,9 +26,9 @@
2626
class ParameterizedTestParameterResolver implements ParameterResolver {
2727

2828
private final ParameterizedTestMethodContext methodContext;
29-
private final List<Named<Object>> arguments;
29+
private final Object[] arguments;
3030

31-
ParameterizedTestParameterResolver(ParameterizedTestMethodContext methodContext, List<Named<Object>> arguments) {
31+
ParameterizedTestParameterResolver(ParameterizedTestMethodContext methodContext, Object[] arguments) {
3232
this.methodContext = methodContext;
3333
this.arguments = arguments;
3434
}
@@ -56,13 +56,25 @@ public boolean supportsParameter(ParameterContext parameterContext, ExtensionCon
5656
}
5757

5858
// Else fallback to behavior for parameterized test methods without aggregators.
59-
return parameterIndex < this.arguments.size();
59+
return parameterIndex < this.arguments.length;
6060
}
6161

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

6880
}

0 commit comments

Comments
 (0)