簡體   English   中英

如何通過SpringJUnit4ClassRunner使用RunNotifier或RunListener

[英]How to use RunNotifier or RunListener using SpringJUnit4ClassRunner

我想在測試失敗時得到通知。 理想情況下,我想知道在@After帶注釋的方法中測試是通過還是失敗。 我知道他們是可以用於此目的的RunListener,但僅當我們使用JunitCore運行測試時,它才有效。 如果測試用例失敗,或者可以與SpringJUnit4ClassRunner一起使用的RunListener類似,有沒有辦法得到通知?

Spring TestContext Framework提供了一個TestExecutionListener SPI,可以用來實現此目的。

基本上,如果實現TestExecutionListener (或者更好地擴展AbstractTestExecutionListener ),則可以實現afterTestMethod(TestContext)方法。 從傳入的TestContext ,您可以訪問引發的異常(如果存在)。

這是org.springframework.test.context.TestContext.getTestException()的Javadoc:

獲取在執行測試方法期間引發的異常。

注意:這是一個可變屬性。

返回:引發的異常;如果未引發異常,則返回null

僅供參考:您可以通過@TestExecutionListeners批注注冊您的客戶偵聽器。

問候,

山姆

替代方法是JUnits內置的TestWatcher規則。

該規則允許您選擇要通知的事項。 這是來自JUnit Github Docs的壓縮示例

@Test 
public class WatcherTest {

  @Rule
  public final TestRule watcher = new TestWatcher() {

    @Override
    protected void failed(Throwable e, Description) {}

    // More overrides exists for starting, finished, succeeded etc
  };

  @Test
  public void test() {}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM