2016-11-17 33 views
0

從Net.thucydides示例源代碼中的Program Creek中找到一個用於更改我的JUnit類中的測試名稱的解決方案,但它不起作用。我在報告中仍然可以得到一個試驗名稱(如圖所示的圖片鏈接)在參數化運行期間,通過測試@標題更改的寧靜

Only 1 Test

我的最終目標是運行相同的Maven的寧靜JUnit測試多次並報告參數feeded獨特的測試名來自名爲「testCase」的spreadSheetData 也許我的解決方案根本沒有做出任何改變,希望能夠清楚我想要什麼。

有沒有人可以幫助我前進?

我的代碼片段如下所示:

@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

一種方式來做到這一點是:

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

這樣做是把title@Title。它使用titletoString()方法,所以只要它的toString()方法返回任何可能構成標題(/ String)的東西,就可以傳遞任何對象。

你可以做更多,例如:

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

標題會說明是這樣的:

測試用例沒有。 3項目MyProject。


編輯刮開所有這一切,該方案僅適用於寧靜的@Step而不是@Title所使用JUnit的測試方法。那些不需要傳遞給它們的參數。

我看到只有一個解決方案,那就是JUnit 5 Dynamic Test。還不確定Serenity BDD會如何。如果你有機會測試這個讓我知道。如果我也有任何經驗,我會再次編輯這個答案。

+0

Thanx,@JDelorean,有史以來第一次在StackExchange上發佈,所以一直在學習!關於你的建議:我會嘗試一個! –

0

JDelorean,thanx爲您的答案,我想的是解決方案,但我不知道如何調用JUnit測試。調用myTestMethod時標題初始化在哪裏?

+0

因爲我得到這個消息:initializationError(nl.ing.dbz.pega.STP_Offer_Flow_Test):方法STP_Offer_Flow_Basic應該沒有參數 –

+0

嗨@Erik我沒有收到關於您的評論的通知。總是在回答下評論,而不是單獨回答。無論如何,看看我的編輯。 – JDelorean