[英]Calling stubs instead of original methods
我應該測試一個設計相當於這樣的項目:
public class A(){
public static void init() {
M.m();
//some code
}
}
public class M(){
public static void m() {
//some code
}
}
我需要單獨測試class A()
的方法init()
。 因此,我必須為Mm()
制作一個與原始簽名相同的 Mock 或存根。 但是不要修改 2 個類中的任何內容,因為它是不允許的。 在兩種方法都是靜態的情況下,如何讓init()
調用存根並忽略原始方法?
靜態方法不能在沒有反射的情況下被存根或模擬,因為它們與類定義有很強的聯系。
如果您真的無法更改代碼,請使用提供模擬靜態方法的方法的 PowerMock。
如果您可以更改代碼,請將此方法設為實例方法並提供在A
類中設置M
依賴項的方法。
所以你可以非常簡單地存根Mm()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.