2017-07-18 97 views
0

我目前使用Spring TestExecutionListener來處理我的測試類中的自定義註釋。根據一些外部情況,我想忽略一個測試。讓TestExecutionListener跳過/忽略測試

目前我使用beforeTestClassbeforeTestMethod中的某個假設來實現此功能。但不幸的是,它在日誌中創建了一個警告,包括一個遠離嘈雜的堆棧跟蹤。

是否有可能以編程方式忽略測試(可能使用TestContext)?

+0

難道你不能僅僅爲測試添加'@ActiveProfiles(profiles = {「dev」}'並關閉配置文件嗎? – StanislavL

+0

由於複雜的硬件需求,如果沒有複雜化就不可能實現,因此我們創建了自己的註解根據所連接的設備跳過測試 – Nitek

回答

2

我想你可以嘗試擴展默認的測試運行,並提供isIgnored方法的自定義實現:

public class CustomRunner extends BlockJUnit4ClassRunner { 
    public CustomRunner(Class<?> c) throws initializationError { 
     super(c); 
    } 

    @Override 
    protected boolean isIgnored(FrameworkMethod child) { 
     if(shouldIgnore()) { 
      return true; 
     } 
     return super.isIgnored(child); 
    } 

    private boolean shouldIgnore() { 
     /* some custom criteria */ 
    } 
} 

這裏,base implementation忽略具有@Ignore註釋測試,但您可以提供自己的實現的忽略標準。