2016-03-15 49 views
3

我有一個類methodA(),最終調用返回一個字符串的靜態methodB()methodA()可能會導致多個調用methodB(),具體取決於方案。如何測試調用Java中的靜態方法的次數?

我想編寫一個單元測試來驗證一次調用methodA()只會導致單個調用methodB()

這怎麼辦?我看着PowerMockito,但無法找到合適的例子。

class classA { 
    public int methodA() { 
     // Do something that invokes a method that in turn calls B.methodB() 
    } 
} 

class classB { 
    public static String methodB(String str) { 
     // Do something 
    } 
} 
+0

保持呼叫的靜態計數? – Idos

+0

也許powermockito#verifystatic是你需要的 – mp5

+0

不要使用靜態方法,這是不好的做法。重構你的代碼,你不需要這樣做。 – fxrbfg

回答

0

要驗證靜態方法調用Mockito是不夠的。您需要使用PowerMockito

在將PowerMockito添加到您的項目之前,我建議考慮更改靜態方法,並使用具有實例方法的單例。

看到這個:How to verify static void method has been called with power mockito

+0

謝謝,我在看'PowerMockito'。如果可能的話,你可以舉一個例子。如果不將靜態方法作爲實例方法,可以做到這一點嗎? – user1175969

+0

查看鏈接。有很多關於這個的問題,你的是一個重複的.. – Tobb

+0

有趣的是,'verifyStatic(times(n))'對我來說總是如此,其中'n'是任意的隨機+ ve整數。 – user1175969