2016-08-01 54 views
1

我有一些可運行其中參數之一是委託與taskExecutor的執行另一個可運行:如何測試可運行哪些執行另一個可運行

@Override 
public void run() { 
    try { 
     doTask(messageId); 
    } catch (Exception e) { 
     count++; 
     if (count < 4) { 
      delegatedTransactionalAsyncTaskExecutor.execute(this); 
     } else { 
      delegatedTransactionalAsyncTaskExecutor.execute(getOnExceedErrorTask(messageId)); 
     } 
     throw new RuntimeException(e); 
    } 
} 

應該怎麼測試呢?

+0

沒問題。有時我忘了關閉我的問題 – hudi

回答

1

看來delegatedTransactionalAsyncTaskExecutor是你班上的一個領域。

爲了確保您可以測試它,你必須使用依賴注入,像這樣:

class UnderTest { 
    private final Whatever delegatedTransactionalAsyncTaskExecutor; 
    UnderTest(Whatever delegatedTransactionalAsyncTaskExecutor) { 
    this.delegatedTransactionalAsyncTaskExecutor = delegatedTransactionalAsyncTaskExecutor; 
    ... 

而現在,你可以用嘲諷的框架來創建不管類的對象。 Mocks允許您指定您期望發生的方法調用;然後,您可以稍後驗證這些電話確實發生了。

換句話說:你準備一個模擬;然後你調用run()...然後你檢查你正在尋找的那些調用是否真的發生了。當然,對於整個事情的工作,你必須能夠將這些模擬注入到你的「正在測試的課程」中。

相關問題