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

JUnit5 -如何将输入集合传递给ParameterizedTest

JUnit5是Java中一种流行的单元测试框架,它提供了丰富的功能和灵活的测试选项。在JUnit5中,可以使用@ParameterizedTest注解来进行参数化测试,以便在多个输入值上运行相同的测试逻辑。

要将输入集合传递给ParameterizedTest,可以按照以下步骤进行操作:

  1. 创建一个方法,该方法将作为参数化测试的测试方法。该方法应使用@ParameterizedTest注解进行标记。
  2. 在该方法的参数列表中,定义一个参数来接收输入集合。可以使用不同的数据结构,如List、Set或数组。
  3. 使用@MethodSource注解来指定一个方法,该方法将提供输入集合。该方法应返回一个Stream对象,其中包含要用于测试的输入值。
  4. 在提供输入集合的方法中,可以使用不同的方式来生成输入值。例如,可以使用静态数据、外部文件、数据库查询等。

下面是一个示例代码,演示了如何将输入集合传递给ParameterizedTest:

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

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

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

public class MyParameterizedTest {

    @ParameterizedTest
    @MethodSource("inputProvider")
    void testWithParameters(int input) {
        assertEquals(input * 2, calculateDouble(input));
    }

    static Stream<Integer> inputProvider() {
        return Stream.of(1, 2, 3, 4, 5);
    }

    int calculateDouble(int input) {
        return input * 2;
    }
}

在上面的示例中,testWithParameters方法是一个参数化测试方法,它接收一个整数作为输入。inputProvider方法使用@MethodSource注解来提供输入集合,这里使用了一个简单的Stream.of方法来生成输入值。

通过以上步骤,就可以将输入集合传递给ParameterizedTest,并在每个输入值上运行相同的测试逻辑。

腾讯云提供了一系列云计算产品,其中包括云服务器、云数据库、云存储等。您可以根据具体需求选择适合的产品进行开发和部署。更多关于腾讯云产品的信息,请访问腾讯云官方网站:https://cloud.tencent.com/

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

相关·内容

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

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于《JUnit5学习》系列 《JUnit5学习》...Assertions类 按条件执行 标签(Tag)和自定义注解 参数化测试(Parameterized Tests)基础 参数化测试(Parameterized Tests)进阶 综合进阶(终篇) 本篇概览 本文是《JUnit5...的源码,如下图红框所示,此时的ParameterizedTest还只是体验版: 再看看junit-jupiter-5.7.0版本的ParameterizedTest源码,此时已经是稳定版了:...,用此集合中每个元素作为入参") @ParameterizedTest @MethodSource("stringProvider") void methodSourceTest...reference Sweden, 1 Poland, 2 "United States of America", 3 上述代码执行结果如下,代码中没有测试数据,显得更加简洁一些: 期待《进阶》篇 至此,咱们队JUnit5

85920

如何用Junit5玩出参数化测试的新花样?

简介 这是之前一篇文章《用junit5编写一个类ZeroCode的测试框架》的续集。主要将在之前工作的基础上,围绕参数化测试展开。...框架主要设计点: 一个用例是一个测试文件 一个用例集是一个目录 用例全部在文件中呈现,不需要写代码 主要使用的是 Junit5提供的@ParameterizedTest 引入参数化 为了能使用Junit5...实现 首先来看一下@ParameterizedTest注解的用例样例 package com.demo.junit5; import java.io.IOException; import java.io.Reader...\\tests\\demo1\\sample.csv") @ParameterizedTest @MethodSource("getFiles") public void sampleTest...e.printStackTrace(); return null; } } 这个方法就是去完成扫描给定目录下所有的csv文件,并将文件的完整目录纳入一个集合中并返回

1.5K20

如何用Junit5玩出参数化测试的新花样?

简介 这是之前一篇文章《用junit5编写一个类ZeroCode的测试框架》的续集。主要将在之前工作的基础上,围绕参数化测试展开。...框架主要设计点: 一个用例是一个测试文件 一个用例集是一个目录 用例全部在文件中呈现,不需要写代码 主要使用的是 Junit5提供的@ParameterizedTest 引入参数化 为了能使用Junit5...实现 首先来看一下@ParameterizedTest注解的用例样例 package com.demo.junit5; import java.io.IOException; import java.io.Reader...\\tests\\demo1\\sample.csv") @ParameterizedTest @MethodSource("getFiles") public void sampleTest...e.printStackTrace(); return null; } } 这个方法就是去完成扫描给定目录下所有的csv文件,并将文件的完整目录纳入一个集合中并返回

91030

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

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于《JUnit5学习》系列 《JUnit5学习》...学习》系列的第七篇,前文咱们对JUnit5的参数化测试(Parameterized Tests)有了基本了解,可以使用各种数据源控制测试方法多次执行,今天要在此基础上更加深入,掌握参数化测试的一些高级功能...其实JUnit5并没有严格要求,而事实上JUnit5是可以做一些自动或手动的类型转换的; 如下代码,数据源是int型数组,但测试方法的入参却是double: @Order(16) @DisplayName...("int型自动转为double型入参") @ParameterizedTest @ValueSource(ints = { 1,2,3 }) void argumentConversionTest...的参数化测试(Parameterized)相关的知识点已经学习和实战完成了,掌握了这么强大的参数输入技术,咱们的单元测试的代码覆盖率和场景范围又可以进一步提升了;

91930

JUnit5参数化测试扩展3案例

在参数化测试方面,JUnit5提供了较为丰富的数据源,如@ValueSource,支持提供int、float等基本类型以及String和Class等作为参数,@CsvSource可以提供CSV格式的数据...除了上述由JUnit5提供的数据源之外,JUnit也接受自定义数据源来进行参数化测试。...比如价格,客户端输入的价格为300.2,但是实际存储的值为300.19999999999996615。简单的利用两数取余是否为零来判断是否整除,由于精度问题无法实现。...这样,需要对价格有效性判断的程序进行至少两方面的测试: 当输入某个价格区间内,如200-300之间的所有有效tick整数倍的价格时,程序应该判断是有效价格。...当输入某两个相邻的价格区间,如200-200.2之间的非tick整数倍的价格时,程序应该判断不是有效价格。 使用基于JUnit5自定义数据源的开源项目junit-pioneer就支持这样的测试场景。

91430

五年了,你还在用junit4吗?

junit5 JUnit5在2017年就发布了,你还在用junit4吗? 什么是junit5 与以前的JUnit版本不同,JUnit 5由三个不同子项目的多个不同模块组成。...但是与JUnit4的@Test不同,他的职责非常单一不能声明任何属性,拓展的测试将会由Jupiter提供额外测试 @ParameterizedTest: 表示方法是参数化测试 @RepeatedTest...image-20210416232512919 动态测试 动态测试只需要编写一处代码,就能一次性对各种类型的输入和输出结果进行验证 @TestFactory @DisplayName("动态测试") Stream...这就离不开断言和假设 断言:封装好了常用判断逻辑,当不满足条件时,该测试用例会被认为测试失败 假设:与断言类似,当条件不满足时,测试会直接退出而不是判定为失败 因为不会影响到后续的测试用例,最常用的还是断言 除了Junit5...参考 https://junit.org/junit5/docs/current/user-guide/#overview https://assertj.github.io/doc/

1.5K40

SpringBoot对单元测试支持、常用单元测试功能使用实例

JUnit5 单元测试示例 在上节中已经提到 JUnit5 与 JUnit4 有所不同,本节还是用同样的示例来看一下 JUnit5 的使用。...,JUnit5 也提供了一套自己的注解。....@ BeforeAll 类似于 JUnit 4 的@BeforeAll,表示使用了该注解的方法应该在当前类中所有使用了@Test、@ RepeatedTest、@ ParameterizedTest...在编程过程中,通常通过模拟一些输入数据,来验证程序是否达到预期效果。 模拟对象-般应用于真实对象有以下特性的场景:行为不确定、真实环境难搭建、行为难触发、速度很慢、需界面操作、回调机制等。...APPLICATION_ JSON_ _UTF8_ _VALUE) / ResultActions . param 添加请求值 . param( "name", "MockMvc")) // Resul

1.6K30

开发必备之单元测试

C: Correct,正确的输入,并得到预期的结果。 D: Design,与设计文档相结合,来编写单元测试。 E : Error,单元测试的目标是证明程序有错,而不是程序无错。...为了发现代代码中潜在的错误 我们需要在编写测试用例时有一些强制的错误输入(如非法数据、异常流程、非业务允许输入等)来得到预期的错误结果。...需要注意的是,在 JUnit5 版本中,取消了该注解的 timout参数的支持 @TestFactory 注明一 方法是基于数据驱动的动态测试数据源 @ParameterizedTest 注明一个方法是测试方法...中, 除了运行@Test注解的方法,还额外支持运行@ParameterizedTest 和@RepeatedTest注解的方法 @AfterEach 与JUnit4 中的@After类似 ,可以在每一个测试方法运行后...,都运行一个指定的方法,在JUnit5 中, 除了运行@Test注解的方法,还额外支持运行@ParameterizedTest 和@RepeatedTest注解的方法 @BeforeAll 与JUnit4

15410

单元测试指南

功能模块指实现了一个完整功能的模块(单元),一个完整的程序单元具备输入、加工和输出三个环节。而且每个程序单元都应该有正规的规格说明,使之对其输入、加工和输出的关系做出名明确的描述。...而且很多时候我们要比较对象、集合、Map等数据结构。这样我们要么进行大段的字段获取再断言。或者干脆自己编写表达式并断言其结果。...JUnit5 (1). Junit5简介 JUnit 5 跟以前的JUnit版本不一样,它由几大不同的模块组成,这些模块分别来自三个不同的子项目。...@ParameterizedTest: 表示该方法是一个参数化测试(可以用不同的参数多次运行试)。这样的方法会被继承,除非它们被覆盖。...中的新特性很多,限于篇幅就简单介绍到这里了,如想详细了解 Junit5 的更多特性,请前往Junit5官网和JUnit5用户指南中文版去查看。

6.1K20
领券