![](/img/trans.png)
[英]How to use custom Spring scope with unit tests (SpringJUnit4ClassRunner)
[英]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.