写点什么

软件测试学习笔记丨 Junit5 参数化用例

作者:测试人
  • 2024-06-24
    北京
  • 本文字数:1471 字

    阅读完需:约 5 分钟

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/28006

JUnit5 参数化

  • 在测试流程相同,测试数据需要根据业务需求切换。

  • JUnit5 的参数化支持多种形式数据来源。

参数化环境配置

pom 引入

  • org.junit.jupiter

  • junit-jupiter-params

  • 5.8.1

  • test

JUnit5 简单参数化 @ValueSource

  • 参数化用例的时候使用的注解由 @Test 换成 @ParameterizedTest

  • 单参数化注解 @ValueSource

  • 注意: 如果 @Test 和 @ParameterizedTest 同时使用则会多执行一次

@ValueSource 支持的参数类型


@ValueSource 示例

public class ParamDemoTest {    // @ParameterizedTest 注解指明为参数化测试用例    @    ParameterizedTest    // @ValueSource 单参数注解,示例中为String类型参数化    @ ValueSource(strings = {“        张三”, “李四”, “王五”    })    void testParam(String name) {        assertEquals(name.length(), 2);    }}
复制代码

单参数的问题与解决方案

  • 问题: 很多场景并不会只有一个参数需要进行参数化的验证。

  • 解决方案:使用多参数的参数化方式。

JUnit5 多参数的参数化 @CsvSource

  • 多参数参数化注解 @CsvSource。

  • @CsvSource 通过指定的分隔符实现参数化。

public class CsvParamDemoTest {    // @ParameterizedTest 注解指明为参数化测试用例    @    ParameterizedTest    // @CsvSource 注解指定数据源为 csv 数据,csv默认分隔符为 ,    @ CsvSource({“        张三, 3”, “李四, 15”, “王五, 8”    })    void testParamCsv1(String name, Integer age) {        assertEquals(name.length(), 2);        assertTrue(age > 2);    }
// @ParameterizedTest 注解指明为参数化测试用例 @ ParameterizedTest // @CsvSource 注解指定数据源为 csv 数据,delimiterString 指定数据的分割符 @ CsvSource(value = {“ 张三 | 3”, “李四 | 15”, “王五 | 8” }, delimiterString = “ | ”) void testParamCsv2(String name, Integer age) { assertEquals(name.length(), 2); assertTrue(age > 2); }}
复制代码

JUnit5 CsvFile 的参数化 @CsvFileSource

  • 多参数文件参数化注解 @CsvFileSource

  • 在项目的 test/resources 中新增测试数据 csv 文件

  • @CsvFileSource 支持指定的分隔符进行参数化

多参数化注解 @CsvFileSource 示例

  1. 新建数据文件

  • data.csv 使用 , 分隔的

  • data2.csv 使用 | 分隔的

复制代码张三,3李四,15王五,8张三|3李四|15王五|8
复制代码

多参数化注解 @CsvFileSource 示例

  1. 从 csv 文件中读取数据信息。

  • 读取数据文件使用 , 分隔的

  • 读取数据文件使用 | 分隔的

public class CsvFileParamDemoTest {    // @ParameterizedTest 注解指明为参数化测试用例    @    ParameterizedTest    // @CsvFileSource 注解指定数据源为 csv 数据,csv默认分隔符为 ,    @ CsvFileSource(resources = “/data.csv”)        void testParamCsvFile(String name, Integer age) {            assertEquals(name.length(), 2);            assertTrue(age > 2);        }
// @ParameterizedTest 注解指明为参数化测试用例 @ ParameterizedTest // @CsvFileSource 注解指定数据源为 csv 数据,delimiterString 指定数据的分割符 @ CsvFileSource(resources = "/data1.csv", delimiterString = "|") void testParamCsvFile2(String name, Integer age) { assertEquals(name.length(), 2); assertTrue(age > 2); } }
复制代码

软件测试开发免费视频教程分享


发布于: 刚刚阅读数: 4
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试学习笔记丨Junit5参数化用例_软件测试_测试人_InfoQ写作社区