【问题标题】:Missing org.junit.jupiter.params from JUnit5JUnit5 中缺少 org.junit.jupiter.params
【发布时间】:2018-02-27 16:14:39
【问题描述】:

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

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

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

documentation 页面明确指出它在 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);
    }
}

【问题讨论】:

    标签: java unit-testing junit junit5


    【解决方案1】:

    您的项目类路径必须包含 junit-jupiter-params-xxx.jar 的版本,例如来自 http://central.maven.org/maven2/org/junit/jupiter/junit-jupiter-params/5.0.0/junit-jupiter-params-5.0.0.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、...)。

    在此处查找一些通用示例: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

    【讨论】:

    • 我有第 5 版。它是由 Intellij IDEA 自动添加的,但似乎缺少这一点。下次打开项目时我会检查。谢谢。
    • @Sormuras - 为此添加另一个依赖项有点奇怪。我想知道为什么这首先不是 jupiter-api 的一部分?
    • 从 5.4.0-M1 版本开始 JUnit Jupiter 提供了一个聚合器工件,它捆绑了所有可用的 Jupiter 定义工件。详情请见sormuras.github.io/blog/…
    • 对于gradle,添加testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.1'
    【解决方案2】:

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

    <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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2011-12-11
      • 2011-05-29
      • 2012-06-12
      • 2016-09-30
      • 2020-05-08
      • 2013-06-21
      相关资源
      最近更新 更多