0

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

只有 1 次测试

我的最终目标是多次运行相同的 Maven-Serenity JUnit 测试并报告来自名为“testCase”的 spreadSheetData 的参数提供的唯一 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);

...
}
4

2 回答 2

0

一种方法是:

@Test
@Title("{0}")
public void myTestMethod(String title){
   ...
}

这样做是title@Title. 它使用title'toString()方法,因此您可以传递任何对象,只要它的toString()方法返回任何构成标题 (/String) 的内容。

你可以做更多,例如:

@Test
@Title("Test Case no. {1} project {0}.")
public void myTest(Project project, int testCaseNo){
   ...
}

标题将说明如下内容:

测试用例编号 3 项目 MyProject。


编辑从头开始,此解决方案仅适用于 Serenity @Step,不适@Title用于 JUnit 的测试方法。这些不需要传递任何参数。

我只看到一个解决方案,那就是JUnit 5 Dynamic Test。尚不确定 Serenity BDD 将如何运行。如果您有机会对此进行测试,请告诉我。如果我也获得任何经验,我将再次编辑此答案。

于 2016-11-21T09:31:50.063 回答
-1

JDelorean,谢谢您的回答,我正在考虑解决方案,但我不知道如何调用 JUnit 测试。调用 myTestMethod 时标题在哪里初始化?

于 2016-11-21T13:28:43.863 回答