junit 5.10.0:java.lang.NoSuchMethodError:'java.lang.ClassLoader org.junit.platform.commons.util.ClassLoaderUtils.getClassLoader(java.lang.Class)'

问题描述 投票:0回答:1

我将从 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

如何解决这个问题?我确实在网上查过,但没有运气。

spring-boot junit5 spring-boot-3
1个回答
0
投票

我可以修复它..似乎junit

5.9.3
(但不是5.10.0)与spring boot 3.1.3兼容,使用这个junit版本解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.