Java JUnit5中缺少org.junit.jupiter.params

Java JUnit5中缺少org.junit.jupiter.params,java,unit-testing,junit,junit5,Java,Unit Testing,Junit,Junit5,我正在尝试将参数化测试添加到Java程序中。我找到了JUnit5的示例,我已经包含了这些示例 问题是我无法添加@ParameterizedTest,因为缺少命名空间。Idk为什么或如何 页面清楚地表明它位于org.junit.jupiter.params中,但我没有 让您了解我的代码: import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; import static

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

问题是我无法添加@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);
    }
}
import org.junit.jupiter.api.Test;
导入java.util.array;
导入java.util.Collection;
导入静态org.junit.jupiter.api.Assertions.*;
类子测试
{
// https://blog.codefx.org/libraries/junit-5-parameterized-tests/
静态集合makeSetData()
{
返回Arrays.asList(新对象[][]
{
{1,新字符[]{'1'},
{2,新字符[]{'1',2'},
{3,新字符[]{'1',2',3'},
{4,新字符[]{'1','2','3','4'},
{5,新字符[]{'1','2','3','4','5'}
});
}
//这应该是一个使用makeSetData的参数化测试。
@试验
void makeSet()
{
//安排
SubsetPrenter SubsetPrenter=新的SubsetPrenter();
//表演
char[]set=subsetprenter.MakeSet(5);
//断言
assertArrayEquals(集合,新字符[]{'1','2','3','4','5'});
资产质量(设定长度,5);
}
}

您的项目类路径必须包括一个版本的
junit-jupiter-params xxx.jar
,比如来自

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

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

Group ID: org.junit.jupiter
Artifact ID: junit-jupiter-params
Version: 5.0.0
下载并手动添加它,或者如果您使用的是具有依赖关系管理(Gradle、Maven等)的构建工具,请相应地配置构建脚本(build.Gradle、pom.xml等)

在此处查找一些通用示例:


从版本5.4.0-M1开始JUnit Jupiter提供了一个聚合器工件,它将所有可用的Jupiter定义工件捆绑在一起,以便于使用。有关详细信息,请参阅。

在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>

org.junit.jupiter

我已经包括了第5版。它是由Intellij IDEA自动添加的,但似乎缺少了这一点。我将在下次打开项目时检查。谢谢。@Sormuras-为它添加另一个依赖项有点奇怪。我想知道为什么这不是jupiter api的一部分?从版本5.4.0-M1开始,JUnit jupiter提供了一个聚合器工件,它捆绑了所有可用的jupiter定义工件。有关详细信息,请参阅。对于gradle,请添加
testImplementation'org.junit.jupiter:junit-jupiter-params:5.7.1'