JUnit5 – 从 JSON 文件动态地展示测试用例名称

huangapple go评论76阅读模式
英文:

JUnit5 - Showcase test case name dynamically from json file

问题

Sure, here's the translated code part:

我想要在使用Junit5运行测试用例时动态显示测试用例名称..所以请在这方面帮助我

@ParameterizedTest
@JsonFileSource(resouce="file1.json")
public void abcTest(JsonObje obj){
}

file1.json
[{
"test-case-name" : "婴儿测试用例",
"ageGroup" : "婴儿"
},
{
"test-case-name" : "成年人测试用例",
"ageGroup" : "成年人"
},
{
"test-case-name" : "成熟人士测试用例",
"ageGroup" : "成熟人士"
}
]

我想要在使用Junit5运行测试用例时动态显示测试用例名称..
例如 ... :

婴儿测试用例
成年人测试用例
成熟人士测试用例
...
我想要在使用Junit5运行测试用例时动态显示测试用例名称..
例如
英文:

I want to display test case name dynamically on running the test cases using Junit5..so please help me on that

@ParameterizedTest
@JsonFileSource(resouce="file1.json")
public void abcTest(JsonObje obj){
}

file1.json
[{
"test-case-name" : "test case for infant",
"ageGroup" : "infant"
},
{
"test-case-name" : "test case for adult",
"ageGroup" : "adult"
},
{
"test-case-name" : "test case for mature",
"ageGroup" : "mature"
}
]

I want to display test case name dynamically on running the test cases using Junit5..
For example ... :

test case for infant
test case for adult
test case for mature
...

I want to display test case name dynamically on running the test cases using Junit5..
For example

答案1

得分: 1

你没有提供太多信息,但我认为你想要使用[Junit的动态测试](https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests),而不是参数化测试。

@TestFactory
Collection<DynamicTest> dynamicTestsFromCollection() {
  JsonArray array = ...
  List<DynamicTest> tests = new ArrayList<>();
  for (JsonObject testCase: array) {
    String testCaseName = testCase.get("test-case-name");
    String ageGroup = testCase.get("age-group");
    tests.add(DynamicTest.dynamicTest(testCaseName, () -> testAbc(ageGroup)));
  }
  return tests;
}

这将为每个年龄组创建一个单元测试。
英文:

You don't give much information, but I believe that you want JUnit's Dynamic Tests, instead of parameterized tests.

@TestFactory
Collection&lt;DynamicTest&gt; dynamicTestsFromCollection() {
  JsonArray array = ...
  List&lt;DynamicTest&gt; tests = new ArrayList&lt;&gt;();
  for (JsonObject testCase: array) {
    String testCaseName = testCase.get(&quot;test-case-name&quot;);
    String ageGroup = testCase.get(&quot;age-group&quot;);
    tests.add(DynamicTest.dynamicTest(testCaseName, () -&gt; testAbc(ageGroup)));
  }
  return tests;
}

This will create a unit test for each of your age groups.

huangapple
  • 本文由 发表于 2020年8月19日 03:21:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/63475346.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定