2017-10-13 126 views
2

我正在嘗試爲Junit5寫一個類似於Junit4的擴展,但是我無法理解如何在新的(無狀態)擴展系統中這樣做。JUnit 5,將測試類的信息傳遞給擴展

在以前的版本中的想法是,用戶可以將信息傳遞到擴展類,從而改變它的行爲方式。這裏是在大約什麼是幹什麼用的僞代碼片段:

public void MyTest { 

    // here I can define different behaviour for my extension 
    @Rule MyCustomRule rule = MyCustomRule.of(Foo.class).withPackage(Bar.class.getPackage).alsoUse(Cookies.class); 

    @Test 
    public void someTest() { 
    // some test code already affected by the @Rule 
    // plus, user has access to that class and can use it, say, retrieve additional information 
    rule.grabInfoAboutStuff(); 
    } 
} 

現在,我知道如何操作的JUnit 5延伸,什麼生命週期使用等。但我不知道怎麼給測試作家使用JUnit5修改我的擴展的行爲的權力。任何指針讚賞。

回答

4

JUnit的木星5.0.1的,很遺憾,無法參數傳遞給Extension編程就像你可以在JUnit的規則4.

不過,我的工作將在JUnit的這種支持木星5.1。你可以按照下面的問題,如果你喜歡:https://github.com/junit-team/junit5/issues/497

在此期間,只有這樣,才能通信息到分機是擴展到從那裏支持自定義註釋和提取用戶提供的信息。例如,我允許用戶在Spring Framework中的@EnabledIf註釋中提供一個自定義SpEL expression,而我的ExecutionCondition擴展使用反射從註釋中提取expression

+0

非常感謝您的信息,我會密切注意那個:) – Siliarus

相關問題