2015-10-22 59 views
4

我最近爲自定義處理器編寫了一個自定義方言Thymeleaf,用於處理一些自定義標籤,並在某些情況下用不同的方式替換它們,但我在爲處理器編寫測試時遇到問題:用Mockito測試Thymeleaf自定義方言

AbstractProcessor的類需要重寫

protected ProcessorResult doProcess(Arguments arguments, ProcessorMatchingContext processorMatchingContext, Node node) 

方法,這是一個我需要測試。

由於我的處理器涉及從arguments參數獲取變量,我試着嘲笑它;然而,Arguments,ProcessorMatchingContextNode類都聲明爲final,這意味着它們不能被Mockito嘲笑。

我真的不想實例化一個實際的Arguments對象,因爲它依賴於其他5個不能被模擬的對象,我最終會寫大量的代碼來測試我的處理器中的一行。

有關可能的測試策略的任何想法?

+0

PowerMock可以模擬最終的類:https://code.google.com/p/powermock/wiki/MockFinal,以及靜態方法等 –

+0

我知道,但它是一個相當大的項目,我不想要爲這種情況介紹PowerMock – Raibaz

回答

0

我不知道這是否會幫助或沒有,但你可以實例化一個實際的(非模擬)參數沒有所有的其他5個相關類別,使用Objenesis

0

你試過mockito.when().thenReturn() 如果你的參數正在做任何形式的呼叫,你需要嘲笑,之後,你可以很容易地測試你的方法