0

net.thucydides サンプル ソースの Program Creek から、JUnit クラスのテストの名前を変更するための解決策を見つけましたが、うまくいきません。レポートにはまだ 1 つのテスト名が表示されます (画像リンクに示されているように)

たった1回のテスト

私の最終的な目標は、同じMaven-Serenity JUnit Testを複数回実行し、「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

これを行う1つの方法は次のとおりです。

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

これが行うことは、 を に入れることtitleです@Titletitleのメソッドを使用しているため、そのメソッドがタイトル (/String) を構成するものを返すtoString()限り、任意のオブジェクトを渡すことができます。toString()

たとえば、次のようなことができます。

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

タイトルは次のようになります。

テストケース番号 3 プロジェクト MyProject.


編集すべてをスクラッチします。このソリューションはSerenityでのみ機能し、JUnitのテストメソッドでは使用され@Stepません。@Titleこれらには、パラメーターを渡す必要はありません。

解決策は 1 つしかありません。それがJUnit 5 Dynamic Testです。Serenity BDD でどうなるかはまだわかりません。これをテストする機会があれば、私に知らせてください。私も経験を積んだら、この回答をもう一度編集します。

于 2016-11-21T09:31:50.063 に答える
-1

JDelorean、あなたの答えに感謝します。私は解決策について考えていましたが、JUnit テストを呼び出す方法がわかりません。myTestMethod を呼び出すと、タイトルはどこで初期化されますか?

于 2016-11-21T13:28:43.863 に答える