测试@Title的宁静在参数化运行期间发生变化

时间:2016-11-17 10:18:01

标签: junit serenity-bdd

在net.thucydides示例源代码中的Program Creek中,我找到了一个改变JUnit类中测试名称的解决方案,但它不起作用。我的报告中仍然有一个测试名称(如图像链接所示)

Only 1 Test

我的最终目标是多次运行相同的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);

...
}

2 个答案:

答案 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时标题初始化在哪里?