junit5的数据驱动以及传参方式


在这里插入图片描述

前言

testng 比 junit5 拥有更强大的用例组织灵活性,但是 junit5 拥有相比于 testng 更加丰富是传参方式

ValueSource

使用方法

@ParameterizedTest
@ValueSource(stirngs = {"1", "2"})
public void demo(String str) {
    assert str.equals("1");
}

这样会执行两遍。这种形式上很像 testng 的 Parameters 注解,只不过 testng 的 param 是从 testng.xml 中传上来的

实际项目

在多场景的测试中,简单多参数的情况下建议使用 ValueSource 注解

MethodSource

使用方法

public static Stream<String> function() {
    return Stream.of("a", "b");
}

@ParameterizedTest
@MethodSource("function")
public void testDemo(String str) {
    assert str.equals("b");
}

这种形式会执行两轮 demoTest,第一次 str=a,第二次 str=b

另外还有其他样式,如下:

@ParameterizedTest
@MethodSource("function")
public void testDemo(String str1, String str2) {
    Assertions.assertAll(
            () -> {assert str1.equals("c");},
            () -> {assert str2.equals("d");}
    );
}

public static Stream<Arguments> function() {
    return Stream.of(Arguments.arguments("a", "b"), Arguments.arguments("c", "d"));
}

这种形式可以发现有两轮参数,第一轮是 a 和 b,第二轮是 c 和 d,一个 arguments 表示一轮,所以会执行两次 testDemo,第一次传 a 和 b,第二次传 c 和 d

实际项目

相比于轻量级的 ValueSource,MethodSource 很像 testng 中的 DataProvider。ValueSource 做简单参数传递,而 MethodSource 指定的方法中可以写一些逻辑代码,然后传多种类型参数,包括对象,数据源可以使 yaml,json,xml 等其他。这种方式来做数据驱动也是一个不错的选择

CsvSource

使用方法

@ParameterizedTest
@CsvSource({
    "num1,	1",
    "num2,	2",
    "num3,	3"
})
public void testDemo(String str, int n) {
    System.out.println(str);
    System.out.println(n);
}

通过在 CsvSource 中写上类似 csv 格式的传参来实现数据传递,可以与 ValueSource 作比较

实际项目

对于简单的数据可以使用这种方式

CsvFileSource

使用方法

这一种是通过文件的形式来传参了,是属于数据文件驱动

@ParameterizedTest
@CsvFileSource(resources = "src\main\resources\xxx.csv")
public void testDemo(String str) {
	System.out.println(str);
}

我们看下 csv 怎么写呢,首先 csv 存放在 java 的 recourses 下

param1
param2
param3

其他

NullSource

通过标上@NullSource注解可以传 null 到方法中

@ParameterizedTest
@NullSource

EmptySource

通过标上@EmptySource注解可以传一个""空值到方法中

@ParameterizedTest
@EmptySource
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abcnull

您的打赏是我创作的动力之一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值