我将从 Spring Boot 2.6.6 迁移到 3.1.4
在 3.1.4 设置中,我使用以下测试工件。
当前版本是 -
Spring Boot 3.1.4
JUNIT = 5.10.0
莫基托 = 5.6.0
COMMONS_IO = 2.11.0
以下测试与版本完美配合 -
春季启动 2.6.6
JUNIT = 5.8.2
莫基托 = 4.2.0
COMMONS_IO = 2.11.0
我的测试如下 -
private static Stream<Arguments> expiresAt() {
return Stream.of(
Arguments.of(Instant.ofEpochSecond(0), true),
Arguments.of(Instant.ofEpochSecond(9), true),
Arguments.of(Instant.ofEpochSecond(10), false),
Arguments.of(Instant.ofEpochSecond(11), false),
Arguments.of(Instant.ofEpochSecond(20), false)
);
}
@DisplayName("should determine if token has expired")
@ParameterizedTest
@MethodSource("expiresAt")
void shouldDetermineIfTokenHasExpired(Instant expiresAt, boolean expected) {
// given:
var response = SolumAuthTokenResponse.builder()
.responseMessage(ResponseMessage.builder().expiresAt(expiresAt).build())
.build();
// when:
var actual = subject.hasExpired(response);
// then:
Assertions.assertEquals(expected, actual);
}
我面临的错误是-
java.lang.ClassLoader org.junit.platform.commons.util.ClassLoaderUtils.getClassLoader(java.lang.Class)'
java.lang.NoSuchMethodError: 'java.lang.ClassLoader org.junit.platform.commons.util.ClassLoaderUtils.getClassLoader(java.lang.Class)'
at org.junit.jupiter.params.provider.MethodArgumentsProvider.findFactoryMethodByFullyQualifiedName(MethodArgumentsProvider.java:114)
at org.junit.jupiter.params.provider.MethodArgumentsProvider.findFactoryMethod(MethodArgumentsProvider.java:77)
at org.junit.jupiter.params.provider.MethodArgumentsProvider.lambda$provideArguments$1(MethodArgumentsProvider.java:53)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
...
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Suppressed: org.junit.platform.commons.PreconditionViolationException: Configuration error: You must configure at least one set of arguments for this @ParameterizedTest
at org.junit.platform.commons.util.Preconditions.condition(Preconditions.java:299)
at org.junit.jupiter.params.ParameterizedTestExtension.lambda$provideTestTemplateInvocationContexts$5(ParameterizedTestExtension.java:98)
at java.base/java.util.stream.AbstractPipeline.close(AbstractPipeline.java:323)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
... 70 more
如何解决这个问题?我确实在网上查过,但没有运气。
我可以修复它..似乎junit
5.9.3
(但不是5.10.0)与spring boot 3.1.3兼容,使用这个junit版本解决了这个问题。