簡體   English   中英

調用存根而不是原始方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM