在net.thucydides示例源代码中的Program Creek中,我找到了一个改变JUnit类中测试名称的解决方案,但它不起作用。我的报告中仍然有一个测试名称(如图像链接所示)
我的最终目标是多次运行相同的Maven-Serenity JUnit测试,并报告来自spreadSheetData名为“testCase”的参数提供的唯一Testname 也许我的解决方案根本没有改变,希望很清楚我想要的是什么。
有谁可以帮助我前进?
我的代码片段如下所示:
@RunWith(SerenityParameterizedRunner.class)
public class STP_Offer_Flow_Test {
...
public static Collection<Object[]> spreadsheetData() throws IOException {
InputStream spreadsheet = new FileInputStream("src/test/resources/testdata.xlsx");
return new SpreadsheetData(spreadsheet, null).getData();
...
public class AnnotatedDataDrivenScenario
{
private String name;
@Qualifier
public String getQualifier()
{
return name;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
@Test
public void STP_Offer_Flow_Basic() throws Throwable {
log.info(testCase);
log.info("applicantID = " + applicantID);
AnnotatedDataDrivenScenario testCaseAnnotation = new AnnotatedDataDrivenScenario();
testCaseAnnotation.setName(testCase);
...
}
答案 0 :(得分:0)
<击> 一种方法是:
@Test
@Title("{0}")
public void myTestMethod(String title){
...
}
这样做会将title
放入@Title
。它使用title
的{{1}}方法,因此只要它的toString()
方法返回任何构成标题(/ String)的内容,就可以传递任何对象。
您可以执行更多操作,例如:
toString()
标题将陈述如下:
击><击>
测试案例编号。 3项目MyProject。 击>
编辑抓住这一切,此解决方案仅适用于与JUnit测试方法一起使用的Serenity的@Test
@Title("Test Case no. {1} project {0}.")
public void myTest(Project project, int testCaseNo){
...
}
而不是@Step
。那些不需要传递任何参数。
我只看到一个解决方案,那就是 JUnit 5 Dynamic Test 。尚不确定它将如何与Serenity BDD一起使用。如果你有机会测试这个让我知道。如果我也有这方面的经验,我会再次编辑这个答案。
答案 1 :(得分:-1)
JDelorean,感谢你的答案,我正在考虑解决方案,但我不知道如何调用JUnit测试。调用myTestMethod时标题初始化在哪里?