gpt4 book ai didi

java - JUnit 5 - 将多个 CSV 文件参数转换为单个对象

转载 作者:行者123 更新时间:2023-11-30 06:05:06 25 4
gpt4 key购买 nike

大家好,Java 测试人员。几天前我开始使用 JUnit 5,因为我喜欢创建参数化测试的新方法。

@ParameterizedTest 允许测试以参数化方式运行,@CsvFileSource 从 CSV 文件加载参数。

问题是我的 CSV 中有太多列并且不想在我的单元测试中有一个巨大的方法签名。让我举个例子:

@ParameterizedTest
@CsvFileSource(resources = "/test-data.csv")
void myTest(String p1, String p2, String p3, String p4, String p5, String p6) {
//test using parameters
}

我想知道是否有某种转换器可以为我做这样的事情:

@ParameterizedTest
@CsvFileSource(resources = "/test-data.csv")
void myTest(@ConvertWith(TestDataConverter.class) TestData testData) {
//test using parameters
}

static class TestDataConverter implements TestConverter{
public TestData convert(Object ... params){
//a simple method that creates the TestData object and inserts the params in it
}
}

就是这样。

最佳答案

更新的答案

从 JUnit Jupiter 5.2 开始:,有专用的 ArgumentsAggregatorArgumentsAccessor API 正是用于此目的。

看看 PersonAggregator JUnit 用户指南中的 example 中的具体示例。

原始答案

从 JUnit Jupiter 5.0 开始:不,目前没有开箱即用的转换器可以为您做到这一点。

原因:JUnit Jupiter 中的参数化测试支持不支持从多个参数到单个参数的映射。因此,正如@Sormuras 所建议的那样,您可以打开一个问题来推荐它。

在执行实际转换方面,您可以考虑使用 uniVocity-parsers ,JUnit Jupiter 在内部使用它来解析 CSV 文件。 uniVocity-parsers 还支持直接从 CSV 文件映射到 beans,但要使用它,您需要实现自己的 @TestTemplate 来读取 CSV 文件并执行映射。

其他选项包括来自 Jackson framework 的 CSV 支持或来自 JSefa project .

关于java - JUnit 5 - 将多个 CSV 文件参数转换为单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47552585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com