缺少来自 JUnit5 的 org.junit.jupiter.params

2022-09-02 10:21:10

我正在尝试将参数化测试添加到我的Java程序中。我找到了JUnit 5的示例,我确实包含了这些示例。

https://blog.codefx.org/libraries/junit-5-parameterized-tests/

问题是我无法添加@ParameterizedTest因为缺少命名空间。Idk 为什么或如何。

文档页面清楚地表明它位于org.junit.jupiter.params中,但我没有。

为了让您了解我的代码:

import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.Collection;

import static org.junit.jupiter.api.Assertions.*;

class SubsetPrinterTest
{
    // https://blog.codefx.org/libraries/junit-5-parameterized-tests/

    static Collection<Object[]> makeSetData()
    {
        return Arrays.asList(new Object[][]
        {
                {1, new char[]{'1'}},
                {2, new char[]{'1', '2'}},
                {3, new char[]{'1', '2', '3'}},
                {4, new char[]{'1', '2', '3', '4'}},
                {5, new char[]{'1', '2', '3', '4', '5'}}
        });
    }

    // This should be a parameterized test using the makeSetData.
    @Test
    void makeSet()
    {
        // Arrange
        SubsetPrinter subsetPrinter = new SubsetPrinter();

        // Act
        char[] set = SubsetPrinter.MakeSet(5);

        // Assert
        assertArrayEquals(set, new char[]{'1', '2', '3', '4', '5'});
        assertEquals(set.length, 5);
    }
}

答案 1

您的项目类路径必须包含 的一个版本,如 来自 http://central.maven.org/maven2/org/junit/jupiter/junit-jupiter-params/5.0.0/junit-jupiter-params-xxx.jarjunit-jupiter-params-5.0.0.jar

博客文章从你链接到说(编辑到当前的5.0.0版本):codefx.org

开始使用参数化测试非常简单,但在乐趣开始之前,您必须将以下依赖项添加到项目中:

Group ID: org.junit.jupiter
Artifact ID: junit-jupiter-params
Version: 5.0.0

手动下载并添加它,或者如果您使用的是具有依赖关系管理的构建工具(Gradle,Maven,...),请相应地配置构建脚本(build.gradle,pom.xml,...)。

在此处查找一些通用示例:https://github.com/junit-team/junit5-samples

版本 5.4.0-M1 开始,JUnit Jupiter 提供了一个聚合器工件,该工件捆绑了所有可用的 Jupiter 定义工件,以便于使用。有关详细信息,请参阅 https://sormuras.github.io/blog/2018-12-26-junit-jupiter-aggregator.html


答案 2

在 pom.xml 中添加以下依赖项。jupiter API [Junit 5] 将模块视为插件,每个模块都必须特意添加,

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-params</artifactId>
  <version>${junit.version}</version>
  <scope>test</scope>
</dependency>

有关以下内容的更多信息: https://mvnrepository.com/artifact/org.junit.jupiter


推荐