iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JUnit5中的参数化测试实现
  • 490
分享到

JUnit5中的参数化测试实现

JUnit5参数化测试JUnit参数化测试 2023-05-20 05:05:03 490人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录参数化测试的基本概念使用不同类型的参数使用自定义的参数参数化测试的高级用法结论JUnit是Java中最受欢迎的测试框架之一。JUnit 5是JUnit的最新版本,它引入了许多新功

JUnit是Java中最受欢迎的测试框架之一。JUnit 5是JUnit的最新版本,它引入了许多新功能,其中包括参数化测试。参数化测试使得我们可以使用不同的参数运行同一个测试方法,从而减少我们编写测试用例的工作量,并提高测试覆盖率。在本文中,我们将深入探讨JUnit 5中的参数化测试。

参数化测试的基本概念

在JUnit 5中,我们可以使用@ParameterizedTest注解来创建参数化测试。该注解用于标记一个测试方法,并告诉JUnit该方法需要使用不同的参数运行多次。
下面是一个简单的例子:

@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void testWithInts(int argument) {
    assertTrue(argument > 0 && argument < 4);
}

在上面的例子中,我们使用@ParameterizedTest注解标记了一个测试方法,并使用@ValueSource注解指定了参数的值。在这个例子中,我们将测试方法运行了三次,每次使用不同的参数值(1、2和3)。在每次运行测试方法时,JUnit都会将参数值传递给该方法。

使用不同类型的参数

在JUnit 5中,我们可以使用不同类型的参数来运行参数化测试。下面是一些常见的参数类型:

  • @ValueSource:用于传递基本类型的参数。
  • @EnumSource:用于传递枚举类型的参数。
  • @MethodSource:用于传递一个方法返回的参数列表。
  • @CsvSource:用于传递逗号分隔的参数列表。
  • @CsvFileSource:用于传递CSV文件中的参数列表。
  • @ArgumentsSource:用于传递自定义的参数列表。

下面是一个使用@EnumSource注解的例子:

@ParameterizedTest
@EnumSource(value = TimeUnit.class, names = {"DAYS", "HOURS"})
void testWithEnumSource(TimeUnit unit) {
    assertTrue(EnumSet.of(TimeUnit.DAYS, TimeUnit.HOURS).contains(unit));
}

在上面的例子中,我们使用@EnumSource注解来指定枚举类型的参数。我们将该注解的value参数设置为TimeUnit.class,表示我们要使用TimeUnit枚举类型的参数。我们将该注解的names参数设置为{"DAYS", "HOURS"},表示我们只想使用TimeUnit.DAYS和TimeUnit.HOURS两种参数值。

使用自定义的参数

除了使用JUnit提供的参数类型之外,我们还可以使用自定义的参数。我们只需要实现ArgumentsProvider接口,并在测试方法上使用@ArgumentsSource注解即可。
下面是一个使用自定义参数的例子:

class MyArgumentsProvider implements ArgumentsProvider {
    @Override
    public Stream<? extends Arguments> providearguments(ExtensionContext context) {
        return Stream.of(Arguments.of("apple", 1), Arguments.of("banana", 2));
    }
}
@ParameterizedTest
@ArgumentsSource(MyArgumentsProvider.class)
void testWithCustomArgs(String fruit, int number) {
    assertNotNull(fruit);
    assertNotEquals(0, number);
}

在上面的例子中,我们实现了一个名为MyArgumentsProvider的自定义参数提供器。该提供器返回了两个参数列表,每个参数列表包含两个参数。我们使用@ArgumentsSource注解来指定该提供器,并将其应用于测试方法。

参数化测试的高级用法

在JUnit 5中,我们可以使用@DisplayName注解来为测试方法指定一个自定义名称。这个名称将用于在测试报告中显示。

下面是一个使用@DisplayName注解的例子:

@ParameterizedTest(name = "{index} => a={0}, b={1}, sum={2}")
@CsvSource({"1,2,3", "4,5,9", "6,7,13"})
@DisplayName("Test adding two numbers")
void testAdd(int a, int b, int sum) {
    assertEquals(sum, a + b);
}

在上面的例子中,我们使用@CsvSource注解指定了参数列表,并使用@DisplayName注解为测试方法指定了一个自定义名称。

结论

JUnit 5中的参数化测试使得我们可以使用不同的参数运行同一个测试方法,从而减少了我们编写测试用例的工作量,并提高了测试覆盖率。在本文中,我们介绍了JUnit 5中参数化测试的基本概念、使用不同类型的参数、使用自定义的参数以及高级用法。希望这篇文章能够帮助您更好地理解JUnit 5中的参数化测试。

到此这篇关于JUnit5中的参数化测试实现的文章就介绍到这了,更多相关JUnit5 参数化测试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JUnit5中的参数化测试实现

本文链接: https://www.lsjlt.com/news/214004.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JUnit5中的参数化测试实现
    目录参数化测试的基本概念使用不同类型的参数使用自定义的参数参数化测试的高级用法结论JUnit是Java中最受欢迎的测试框架之一。JUnit 5是JUnit的最新版本,它引入了许多新功...
    99+
    2023-05-20
    JUnit5 参数化测试 JUnit 参数化测试
  • 详解JUnit5参数化测试的几种方式
    目录依赖简单示例七种方式参数类型转换隐式转换显式转换参数聚合自定义显示名字小结参数化测试一直是津津乐道的话题,我们都知道JMeter有四种参数化方式:用户自定义变量、用户参数、CSV...
    99+
    2024-04-02
  • Python中怎样实现参数化测试
    Python中怎样实现参数化测试,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、什么是参数化测试?对于普通测试来说,一个测试方法只需要运行一遍,而参数化测试对于一个测试方法,...
    99+
    2023-06-16
  • SpringBoot+JUnit5+MockMvc+Mockito单元测试的实现
    目录版本 项目结构 EchoServiceImpl EchoControllerNoMockitoTest EchoControllerMockTest 今天聊聊如何在 Spring...
    99+
    2024-04-02
  • pytest实现测试用例参数化
    背景 本文总结pytest的测试用例参数化。 说明 软件测试中,输入相应值,检查期望值,是常见测试方法。 在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖...
    99+
    2024-04-02
  • pytest如何实现测试用例参数化
    小编给大家分享一下pytest如何实现测试用例参数化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!说明软件测试中,输入相应值,检查期望值,是常见测试方法。在自动化...
    99+
    2023-06-14
  • pytest fixtures函数及测试函数的参数化实例分析
    这篇文章主要介绍“pytest fixtures函数及测试函数的参数化实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pytest fixtures函数及测试函数的参数化实...
    99+
    2023-06-30
  • pytest fixtures函数及测试函数的参数化解读
    目录pytest fixtures测试函数参数化一、@pytest.mark.parametrize:参数化测试函数1. 常规用法2. 在参数化中标记单个测试实例3. 多个参数化组合...
    99+
    2024-04-02
  • Jenkins中怎么实现自动化测试
    Jenkins是一个持续集成工具,可以通过配置自动化测试任务来实现自动化测试。以下是在Jenkins中实现自动化测试的一般步骤: ...
    99+
    2024-03-05
    Jenkins
  • C++技术中的调试:实现自动化测试驱动的调试
    atdd 是一种强大的调试技术,通过自动化测试用例来识别缺陷并解决问题。在 c++++ 中,可以使用 gtest、catch2 和 boost.test 等测试框架来实现 atdd。这些...
    99+
    2024-05-08
    自动化测试 调试 c++ 最大公约数
  • python实现hive自动化测试
    本程序主要实现hive权限测试。系统中有管理员用户single和测试用户test。在路径/home/test/下,将用例和预期结果写在xml文件中。        执 行过程:kinit single用户,beeline -u -e登录并执...
    99+
    2023-01-31
    测试 python hive
  • seleniumIDE自动化测试脚本的实现
    目录selenium IDE是干什么的selenium IDE环境的安装selenium IDE的使用selenium IDE是干什么的 Selenium IDE   是一...
    99+
    2024-04-02
  • pytest运行指定的测试参数
    文章目录 一.mark1.背景:案例1:只执行smoke类型的测试用例 二.跳过测试skip案例1:pytest.mark.skip():跳过某些用例案例2:如果在整个类中添加@pyt...
    99+
    2023-09-04
    pytest python 开发语言
  • Golang 函数测试中如何实现代码覆盖率测试?
    回答: 在 golang 函数测试中实现代码覆盖率测试的步骤如下:步骤:安装覆盖率包:go get golang.org/x/tools/cmd/cover。导入覆盖率包并设置覆盖模式。...
    99+
    2024-04-16
    golang 代码覆盖率
  • UIAutomation自动化测试怎么实现
    UIAutomation是一种自动化测试工具,它可以通过模拟用户操作来进行界面的自动化测试。实现UIAutomation自动化测试的...
    99+
    2023-08-20
    UIAutomation
  • Python怎么实现自动化测试
    本篇文章为大家展示了Python怎么实现自动化测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码...
    99+
    2023-06-14
  • Golang函数参数传递的测试和调试技术
    在 go 中,函数参数通过值传递或引用传递。值传递创建参数的副本,而引用传递创建对参数的引用。测试参数传递可使用单元测试、断言、调试器和日志。在引用传递的情况下,对参数的修改将影响原始参...
    99+
    2024-04-13
    golang 函数参数
  • python+pytest自动化测试函数测试类测试方法的封装
    目录前言一、测试用例封装的一般规则三、测试类/方法的封装四、示例代码总结前言 今天呢,笔者想和大家聊聊python+pytest接口自动化中将代码进行封装,只有将测试代码进行封装,才...
    99+
    2024-04-02
  • 在AmazonAurora中如何实现数据库的性能测试和基准测试
    在Amazon Aurora中实现数据库的性能测试和基准测试可以通过以下步骤进行: 定义测试目标:确定要测试的性能指标,例如吞吐...
    99+
    2024-04-09
    AmazonAurora
  • 参考 Go 测试中的 Jira 要求
    php小编柚子在Go测试中,经常会遇到Jira的要求。Jira是一款流行的项目管理和问题追踪工具,广泛用于软件开发团队中。在测试过程中,使用Jira可以帮助团队更好地跟踪和解决bug,...
    99+
    2024-02-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作