junit spring boot参数化测试不起作用

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

我用参数设置了基本测试

@ParameterizedTest
@MethodSource("intsTest")
public void multiplesOf5(Integer input){
    int i =0;
}

private static Stream<Arguments> intsTest(){
    Stream<Arguments> argumentsStream = Stream.of(
            Arguments.of(1));

    return argumentsStream;
}

但我似乎无法运行它,我不断收到以下信息:

java.lang.AbstractMethodError: Receiver class org.junit.jupiter.engine.descriptor.TestTemplateExtensionContext does not define or inherit an implementation of the resolved method 'abstract org.junit.jupiter.api.extension.ExecutableInvoker getExecutableInvoker()' of interface org.junit.jupiter.api.extension.ExtensionContext.
    at org.junit.jupiter.params.provider.MethodArgumentsProvider.lambda$provideArguments$2(MethodArgumentsProvider.java:60)
    )

我的 gradle 有

testImplementation("org.junit.jupiter:junit-jupiter-engine:5.8.2")
java spring-boot junit5
1个回答
0
投票

所以我在本地尝试了你的代码,错误来自该行

@MethodSource("intsTest")

事实上,通过以下方式测试你的方法一切正常:

@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5})
public void multiplesOf5(Integer input){
    int i = 0;
}

现在我通过修复 pom.xml 中的依赖关系解决了问题,就 JUnit 而言只留下这两个:

   <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.9.2</version>
    </dependency>

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.9.2</version>
    </dependency>

我不想说不准确,但我假设有太多的 Junit 依赖项可能会导致它们之间出现一些冲突问题。

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