首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JUnit 5-当参数是用户定义的类时,带有@CsvSource的参数化测试默认显示名称

JUnit 5是Java语言中用于单元测试的一个开源测试框架。它提供了丰富的功能和灵活的扩展性,可以帮助开发人员编写高效、可靠的单元测试。

参数化测试是JUnit 5中的一个重要特性,它允许我们通过不同的参数运行同一个测试方法,从而减少代码冗余并增加测试覆盖率。当参数是用户定义的类时,我们可以使用@CsvSource注解来指定参数化测试的输入数据。

@CsvSource是JUnit 5中用于指定CSV格式数据源的注解。CSV是一种常用的数据格式,它以逗号分隔不同的值,每一行代表一个数据集。在参数化测试中,@CsvSource注解可以将CSV格式的数据源作为参数传递给测试方法。

对于带有@CsvSource的参数化测试,默认显示名称是根据测试方法的名称和参数值生成的。如果我们想自定义显示名称,可以使用@DisplayName注解来指定。

以下是一个示例代码,演示了如何使用@CsvSource进行参数化测试,并自定义显示名称:

代码语言:txt
复制
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

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

public class MyParameterizedTest {

    @DisplayName("自定义显示名称示例")
    @ParameterizedTest(name = "{displayName} - 参数: {0}")
    @CsvSource({"1, 2", "3, 4", "5, 6"})
    void myParameterizedTest(int a, int b) {
        int sum = a + b;
        assertEquals(7, sum);
    }
}

在上面的示例中,我们使用@DisplayName注解来指定显示名称为"自定义显示名称示例"。通过{name}占位符,我们可以在显示名称中引用测试方法的名称。通过{0}占位符,我们可以引用第一个参数的值。

对于这个问答内容,腾讯云没有特定的产品与JUnit 5直接相关。然而,腾讯云提供了一系列云计算产品和服务,可以帮助开发人员构建、部署和管理他们的应用程序。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Junit5 新特性你用过多少?

可以看到左边一栏的结果里显示测试项名称就是我们在测试类和方法上使用 @DisplayName 设置的名称,这个注解就是 JUnit 5 引入,用来定义一个测试类并指定用例在测试报告中的展示名称,这个注解可以使用在类上和方法上...@BeforeAll 和 @AfterAll ,它们定义了整个测试类在开始前以及结束时的操作,只能修饰静态方法,主要用于在测试过程中所需要的全局数据和外部资源的初始化和清理。...禁用执行测试:@Disabled 当我们希望在运行测试类时,跳过某个测试方法,正常运行其他测试用例时,我们就可以用上 @Disabled 注解,表明该测试方法处于不可用,执行测试类的测试方法时不会被 JUnit...,我们直接就可以使用这些内置的变量来重新定义测试方法重复运行时的名称。...还支持自定义符号,只要修改它的 delimiter 即可,默认为 ,。

2.9K20

Java单元测试之JUnit 5快速上手

("我的第二个测试开始测试"); } } 直接运行这个测试用例,可以看到控制台日志如下:[006y8mN6ly1g70emiq1ccj313i0nk0vh.jpg] 可以看到左边一栏的结果里显示测试项名称就是我们在测试类和方法上使用...@DisplayName 设置的名称,这个注解就是 JUnit 5 引入,用来定义一个测试类并指定用例在测试报告中的展示名称,这个注解可以使用在类上和方法上,在类上使用它就表示该类为测试类,在方法上使用则表示该方法为测试方法...@BeforeAll 和 @AfterAll ,它们定义了整个测试类在开始前以及结束时的操作,只能修饰静态方法,主要用于在测试过程中所需要的全局数据和外部资源的初始化和清理。...变量表示已经重复的次数,totalRepetitions 变量表示总共要重复的次数,displayName 变量表示测试方法显示名称,我们直接就可以使用这些内置的变量来重新定义测试方法重复运行时的名称...,@CsvSource 还支持自定义符号,只要修改它的 delimiter 即可,默认为 ,。

1.1K20
  • Java单元测试之JUnit 5快速上手

    可以看到左边一栏的结果里显示测试项名称就是我们在测试类和方法上使用 @DisplayName 设置的名称,这个注解就是 JUnit 5 引入,用来定义一个测试类并指定用例在测试报告中的展示名称,这个注解可以使用在类上和方法上...@BeforeAll 和 @AfterAll ,它们定义了整个测试类在开始前以及结束时的操作,只能修饰静态方法,主要用于在测试过程中所需要的全局数据和外部资源的初始化和清理。...禁用执行测试:@Disabled 当我们希望在运行测试类时,跳过某个测试方法,正常运行其他测试用例时,我们就可以用上 @Disabled 注解,表明该测试方法处于不可用,执行测试类的测试方法时不会被 JUnit...,我们直接就可以使用这些内置的变量来重新定义测试方法重复运行时的名称。...还支持自定义符号,只要修改它的 delimiter 即可,默认为 ,。

    1.2K40

    【Java 基础篇】Java JUnit 使用详解

    本文将详细介绍JUnit的使用,包括JUnit的安装、基本用法、常见注解、测试套件、参数化测试等内容。 什么是单元测试? 在深入JUnit之前,让我们首先了解一下什么是单元测试。...单元测试是一种软件测试方法,用于验证应用程序中的最小代码单元(通常是一个函数、方法或类)是否按照预期工作。单元测试的目的是隔离代码的不同部分并确保它们在独立测试时按照规范运行。...以下是一些常用的JUnit注解: @Test @Test注解用于标识测试方法。JUnit将执行所有带有@Test注解的方法,并报告测试结果。..."integration"标签 } @DisplayName @DisplayName注解用于为测试类或测试方法指定自定义的显示名称,用于更清晰地描述测试的目的。...注意事项 在使用JUnit进行单元测试时,有一些注意事项和最佳实践,以确保测试的准确性和可维护性。以下是一些常见的JUnit使用注意事项: 命名规范:使用有意义的命名来标识测试方法和测试类。

    1.8K20

    JUnit5参数化测试的几种方式

    参数化测试一直是津津乐道的话题,我们都知道JMeter有四种参数化方式:用户自定义变量、用户参数、CSV文件、函数助手,那么JUnit5有哪些参数化测试的方式呢?...", "oo", "OOO"); } } 5 @CsvSource 参数化的值为csv格式的数据(默认逗号分隔),比如: @ParameterizedTest @CsvSource({...参数化测试生成的test,JUnit Jupiter给定了默认名字,我们可以通过name属性进行自定义。...小结 本文介绍了JUnit5参数化测试的7种方式,分别是@ValueSource,Null and Empty Sources,@EnumSource,@MethodSource,@CsvSource,...另外还介绍了JUnit Jupiter的参数类型转换和参数聚合。最后,如果想要自定义参数化测试的名字,可以使用name属性实现。

    1.2K30

    五年了,你还在用junit4吗?

    参数测试我觉得是最好用的特性,可以大量减少重复模板式代码,也是junit5最惊艳的提升,强烈推荐使用 @ValueSource: 为参数化测试指定入参来源,支持八大基础类以及String类型,Class...类型 @NullSource: 表示为参数化测试提供一个null的入参 @EnumSource: 表示为参数化测试提供一个枚举入参 @CsvSource:表示读取CSV格式内容作为参数化测试入参 @CsvFileSource...:表示读取指定CSV文件内容作为参数化测试入参 @MethodSource:表示读取指定方法的返回值作为参数化测试入参(注意方法返回需要是一个流) @ArgumentsSource:指定一个自定义的,可重用的...,必须封装成去取JSON或者XMl等数据 AssertJ 当定义好需要运行的测试方法后,下一步则是需要关注测试方法的细节,这就离不开断言和假设 断言:封装好了常用判断逻辑,当不满足条件时,该测试用例会被认为测试失败...假设:与断言类似,当条件不满足时,测试会直接退出而不是判定为失败 因为不会影响到后续的测试用例,最常用的还是断言 除了Junit5自带的断言,AssertJ是非常好用的一个断言工具,最大特点是提供了流式断言

    1.6K40

    JUnit5学习之七:参数化测试(Parameterized Tests)进阶

    系列旨在通过实战提升SpringBoot环境下的单元测试技能,一共八篇文章,链接如下: 基本操作 Assumptions类 Assertions类 按条件执行 标签(Tag)和自定义注解 参数化测试(Parameterized...Tests)基础 参数化测试(Parameterized Tests)进阶 综合进阶(终篇) 本篇概览 本文是《JUnit5学习》系列的第七篇,前文咱们对JUnit5的参数化测试(Parameterized...Tests)有了基本了解,可以使用各种数据源控制测试方法多次执行,今天要在此基础上更加深入,掌握参数化测试的一些高级功能,解决实际问题; 本文由以下章节组成: 自定义数据源 参数转换 多字段聚合 多字段转对象...参数化测试的数据源和测试方法入参的数据类型必须要保持一致吗?...的参数化测试(Parameterized)相关的知识点已经学习和实战完成了,掌握了这么强大的参数输入技术,咱们的单元测试的代码覆盖率和场景范围又可以进一步提升了;

    1K30

    JUnit5学习之六:参数化测试(Parameterized Tests)基础

    系列旨在通过实战提升SpringBoot环境下的单元测试技能,一共八篇文章,链接如下: 基本操作 Assumptions类 Assertions类 按条件执行 标签(Tag)和自定义注解 参数化测试(Parameterized...Tests)基础 参数化测试(Parameterized Tests)进阶 综合进阶(终篇) 本篇概览 本文是《JUnit5学习》系列的第六篇,一起来实战强大参数化测试(Parameterized Tests...,然后用@ValueSource指定每次测试时的参数来自字符串类型的数组:{ “a”, “b”, “c” },每个元素执行一次; 至此,咱们已体验过最简单的参数化测试,可见就是想办法使一个测试方法多次执行...源码,此时已经是稳定版了: 综上所述,如果要使用参数化测试,最好是将junit-jupiter升级到5.7.0或更高版本,如果您的应用使用了SpringBoot框架,junit-jupiter是被...SMALL和UNKNOWN都没有执行: 方法数据源(MethodSource) @MethodSource可以指定一个方法名称,该方法返回的元素集合作为测试方法的入参; 先来定义一个方法,该方法一般是

    96220

    Junit5参数化实战,让测试更优雅

    更妙的是,每条测试用例都能够独立存在,彼此之间毫不干扰。 在这篇文章中,我将带领大家深入体验一下Junit5是如何实现参数化的奇妙之处。让我们一同踏上这段探索之旅,领略代码世界的多彩风景。...使用步骤 添加多参数参数化注解 @CsvSource @CsvSource 通过默认或指定的分隔符实现参数化 实战演练 默认分隔符 @ParameterizedTest // 传递的参数格式是一个集合,...(n, new DemoTest().lengthOfLongestSubstr(s)); } 运行结果: 指定分隔符 @CsvSource 的分隔符默认是逗号,在实际测试中,若逗号需要被当做参数进行传递...使用步骤 通过@MethodSource注解引用方法作为参数化的数据源信息,允许引用一个或多个测试类的工厂方法,这样的方法必须返回一个Stream,Iterable,Iterator或参数数组。...在@MethodSource注解的参数必须是静态的工厂方法,除非测试类被注释为@TestInstance(Lifecycle.PER_CLASS) 静态工厂方法的返回值需要和测试方法的参数对应 如果在@

    57130

    你家的测试用例方法有入参吗?

    本文简要介绍JUnit5中的依赖注入特性。在介绍之前,先以斐波那契数列为例,看看JUnit4的参数化测试。...当在用例类上面指定@RunWith (Parameterized.class)的运行器时,就可以实现参数化测试。 l @Parameters指定提供测试数据集的方法。...l 参数注入,由于JUnit4是通过 @RunWith(Parameterized.class)来提供不同测试类的实例来实现参数化测试,因此参数可以通过测试类的带参构造方法来实现注入,或者是在测试类的公有成员参数上通过...而在Junit5中,Junit团队不再自我设限,允许JUnit5的测试方法可以带有参数,并且可以借助这个功能注入TestInfo、TestReport等测试上下文。...也借助于此功能,Junit5中重新设计的参数化测试解决方案。来看一下如果使用新的方案来实现斐波那契数列测试。

    1.3K30

    【干货】JUnit5快速指南

    @ParameterizedTest 表示方法是参数化测试。除非被覆盖,否则这些方法可以继承。 @RepeatedTest 表示方法是用于重复测试的测试模板。除非被覆盖,否则这些方法可以继承。...@DisplayName 声明测试类或测试方法的自定义显示名称。这个注解不被继承。...@Disabled 用于禁用测试类或测试方法; 类似于JUnit4的@Ignore。这个注解不能继承。 @ExtendWith 用于注册自定义扩展。这个注解可以继承。...: 使用相同的测试代码,针对不同的测试数据,我们需要参数化。...此类工厂方法必须返回流、可迭代、迭代器或参数数组。此外,这种工厂方法不能接受任何参数。测试类中的工厂方法必须是静态的。

    49110

    JUnit5参数化测试扩展3案例

    在参数化测试方面,JUnit5提供了较为丰富的数据源,如@ValueSource,支持提供int、float等基本类型以及String和Class等作为参数,@CsvSource可以提供CSV格式的数据...另外还可以通过@MethodSource来提供任意类型的数据。 除了上述由JUnit5提供的数据源之外,JUnit也接受自定义数据源来进行参数化测试。...这样,需要对价格有效性判断的程序进行至少两方面的测试: 当输入某个价格区间内,如200-300之间的所有有效tick整数倍的价格时,程序应该判断是有效价格。...当输入某两个相邻的价格区间,如200-200.2之间的非tick整数倍的价格时,程序应该判断不是有效价格。 使用基于JUnit5自定义数据源的开源项目junit-pioneer就支持这样的测试场景。...案例3-@JsonSource 除了@CsvSource和@CsvFileSource来读取CSV格式的入参之外,在工作中也可能希望是以JSON格式的数据来实施参数化测试,毕竟JSON类型的数据已经成为了系统接口之间交换数据的主流方式

    94730

    Junit 5新特性全集

    2、测试类的生命周期 @Test Junit的最核心的就是@Test这个注解,把它放置在方法上来作为测试用例来运行。JUnit 5为每个测试方法创建一个新的测试实例,这个和Junit 4是一样的。...Before 和 After 在运行测试代码时你也许希望做一个初始化设置和结束后的清理操作。下面有4个方法注解可以帮助我们实现: @BeforeAll: 只执行一次。...JUnit是无状态的 这里要明白一个事情,就是Junit引擎默认是无状态的,引擎对扩展实例的初始化时间和实例的生存时间未做任何保证。...参数化测试方法被作为一个集合来展示,有父节点和子节点,每次调用都是一个子节点,这些子节点的名字默认的格式是“[{index}] {arguments}”,就像你现在看到的那样,我们可以通过在@ParameterizedTest...自定义注解 JUnit 5 API由注解驱动的,引擎在检查它们的存在时做了一些额外的工作:它不仅在类,方法和参数上查找注解,还在其他注解上查找注解。

    1.8K120

    Spring Boot - Junit4 Junit5 Spring Boot IDEA 关系梳理

    它们有一些重要的区别,包括以下几个方面: 架构和模块化: JUnit 4 是一个单一的 JAR 文件,没有明确定义的模块系统。...这使得用户可以选择性地添加所需的功能。 扩展性: JUnit 4 的扩展是通过 @RunWith 和 TestRule 来实现的,有一些限制。...JUnit 5 提供了更强大的扩展模型,称为 Jupiter 扩展模型,允许用户创建自定义扩展来修改测试执行过程,这些扩展可以通过 @ExtendWith 注解应用到测试类。...参数化测试: JUnit 4 支持参数化测试,但需要使用 @Parameters 注解和一个特殊的方法来定义参数。...JUnit 5 引入了更强大的参数化测试功能,通过 @ParameterizedTest 注解和 @MethodSource 或 @CsvSource 等注解来支持参数化测试,使其更易于使用和理解。

    49430

    Java测试框架——JUnit详解(4&5)

    扩展JUnit 新功能: 参考文章 JUnit是Java编程语言的单元测试框架,用于编写和运行可重复的自动化测试,也是当下主流的Java测试框架 ---- 前言 如果有对单元测试还不熟悉的小伙伴可以看一下我的这篇文章...可维护:单元测试是可重复执行的,因此在修改代码时,可以通过运行单元测试来确保修改后的代码不会破坏已有的功能。 可扩展:JUnit 提供了一些扩展点,使开发人员可以根据自己的需要扩展它。...例如,测试得到了更好的显示名称,并且可以分层组织。 JUnit 5被组织成多个库,所以只将你需要的功能导入到你的项目中。通过Maven和Gradle等构建系统,包含合适的库很容易。...{ // ... } 新功能: 显示名称。...还有其他多个值源,比如@EnumSource和@ArgumentsSource(一种自定义值提供者)。如果你需要一个以上的参数,也可以使用@MethodSource或@CsvSource。

    1.9K30

    Java IDEA JUnit 单元测试

    JUnit是一个开源的 Java 单元测试框架,它使得组织和运行测试代码变得非常简单,利用JUnit可以轻松地编写和执行单元测试,并且可以清楚地看到哪些测试成功,哪些失败 JUnit 还提供了生成测试报告的功能...对于可能抛出的异常进行测试是测试的重要环节,因此在编写JUnit测试的时候,除了正常的输入输出,还要特别针对可能导致异常的情况进行测试。...JUnit提供了一个@ParameterizedTest注解,用来进行参数化测试。...参数化测试和普通测试稍微不同的地方在于,一个测试方法需要接收至少一个参数,然后,传入一组参数反复运行。 编写一个方法,该方法把字符串的第一个字母变为大写,后续字母变为小写。...还可以使用@CsvSource标记传入测试参数的方法,它的每一个字符串表示一行,一行包含的若干参数用 , 分隔。

    95310

    Selenium自动化的JUnit参数化实践

    值得关注的是,在对Web应用程序进行自动化测试时,很难为后续的测试迭代维护单个稳定可靠的数据源。...但是,在打算创建更具体的Selenium测试自动化脚本的情况时,就需要使用像JUnit这样的多合一框架。JUnit使我们能够以更健壮的方式编写测试用例,并使我们拥有多种功能,其中之一就是参数化。...现在,让我们进一步探讨用于Selenium测试自动化的JUnit测试参数化。我将创建一个包含测试方法的类。...参数化测试的最后一步是创建一个测试运行类,该类将驱动我们的测试执行。...一些常规方案可以是测试具有多个用户搜索不同的关键字,这种方法的主要好处是代码可重用性,无需维护Selenium测试自动化脚本,只需更新文件中的测试数据即可。

    1.1K30

    spring junit单元测试

    单元测试首先应当是自动化的,由开发者编写,为了保证代码片段(最小单元)是按照预期设计实现的。...依赖注入 @SpringBootTest // 运行单元测试时显示的名称 @DisplayName("Test MerchantController") // 单元测试时基于的配置文件 @TestPropertySource...这里没有太多可说的,可以看到我们在初始化方法中加载了虚拟的redis服务器,在前置方法中设置了Header的值 单元测试的主体方法 我们测试的主要的就是MerchantController这个类,这个类下面还有一层...代码当中实际上也提到了,就是junit5提供的@ParameterizedTest注解,配合@ValueSource, @CsvSource来使用,分别可以设置指定类型或者复杂类型到单元测试中,使用方法的参数接受...,定义测试不同的分支。

    1K60
    领券