導航:首頁 > 方法技巧 > 私有方法如何測試

私有方法如何測試

發布時間:2023-05-12 12:31:07

如何嘲笑私有方法使用PowerMock測試

1、用下面的的Mockito的API,我成功地做到這一點:public class CodeWithPrivateMethod {

public void meaningfulPublicApi() {
if (doTheGamble("Whatever", 1 << 3)) {
throw new RuntimeException("boom");
}
}

private boolean doTheGamble(String whatever, int binary) {
Random random = new Random(System.nanoTime());
boolean gamble = random.nextBoolean();
return gamble;
}
}

而這里的JUnit測試:import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.moles.junit4.PowerMockRunner;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.method;

@RunWith(PowerMockRunner.class)
@PrepareForTest(CodeWithPrivateMethod.class)
public class CodeWithPrivateMethodTest {

@Test(expected = RuntimeException.class)
public void when_gambling_is_true_then_always_explode() throws Exception {
CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod());

when(spy, method(CodeWithPrivateMethod.class, "doTheGamble", String.class, int.class))
.withArguments(anyString(), anyInt())
.thenReturn(true);

spy.meaningfulPublicApi();
}
}

2. 這將與任何測試的一個通用的解決方案是創建你自己的嘩握模擬。 更改您要保護的。 在你的測試類擴展類 覆蓋到返回的任何常量想要 這沒有按'任意所以它不是優雅,但它會一直工作,即使沒有PowerMock。另外,您的Mockito來為你做的步驟#2&#3,如果你已經做了第一步了。要直接嘲笑一個,你將需要PowerMock如圖對方森頌的回答。

3. 實際它是此蘆鄭扔是不是從它的我覺得還是你的測試並不如預期。

⑵ 如何給一個私有方法做單元測試

1. 是不是需要對一個方法(無論是public或是private)取決於這個函數的復雜度和價值,並不是所有的function都要測試的,除非需要追求很高的測試覆蓋率。這樣的話是否需要對一個private方法進行測試就看這個private方法是不是比較重要、復雜、容易出錯,其實這個原則也適用於Public的方法,你總不會去測試Java的setter和getter吧。
2. 很多時候private的方法的測試時可以通過對public方法的測試間接來達到的。一個設計良好的、充分運用TDD的工程完全可以通過對public方法提供完整派孫慧的用例就可以覆蓋private方法。
3. 僅僅為了能夠進行單元測試,而採用將private方法改成public方法通常是不合適的,這樣會暴露出不該暴露的實現細節,另外介面過多也破壞了SRP(單一職責原則)。
4. 當你非常渴望測試一個private方法的時候,可以仔細評估這個private方法和目前所在類的關系,這樣的private方法是不是應該遷移到另塵答一個類中,在另一個類中作為public提供介面給調用方(我通常這么干)。
5. 最後一個測試private的途徑就是利用語言提供的反射功能,在testcase中將private方法修改成public的,以凱敏此來實現對private方法的測試。

⑶ 使用Powermock對私有方法進行mock

 團譽宏 在public方法中往往會調用一些private方法,如果private方法很復雜,我們就需要處理很多方法的mock。如果這時只想要測試public方法,並不想關注private方法的邏輯,那麼就需要虛歷對private方法進行mock。下面我們簡單介紹下如何通過Powermock來對私有方法進行mock。

被測試類:

  此類中包含一個public方法mockPrivateFunc,裡面調用了private方法privateFunc。當前我們想要測試該public方法,並且不想進入private方法執行,那麼就需要對該塌冊私有方法進行模擬。

測試類:

  1、由於是對本類的私有方法進行模擬,所以需要在PrepareForTest後面加上MockPrivateClass,同時需要使用spy來模擬一個對象。
  2、 使用下面方式來模擬私有方法:

  如果私有方法存在參數,則同樣的需要在私有方法名後面帶上同樣個數及類型的參數,其方法原型為:

  3、使用verifyPrivate來驗證私有方法被調用,其例如下:

  verifyPrivate的參數為mock的對象,及驗證模式(可選),invoke參數為要驗證的私有方法名稱及相應參數。

⑷ IOS 單元測試怎麼測試私有方法

直接呼叫就好了你還是可以呼叫,只是編譯器會給你警告

⑸ junit有什麼方法可以測試私有方法

有一個invoke方法可以

⑹ JUnit test 如何做Java靜態方法測試

使用junit測試Java靜態私有方法,通過以下案例進行分析:

測試目標類如下:

packagecn.outofmemory.junit;
publicclassTestTarget{
/**
*移除正則表達式中需要轉義的字元
*@paramwword
*@return移除正則表達式中需要轉義的字元
*@authorAdministrator
*@date2015-7-11
*/
(Stringw){
if(w==null){
returnnull;
}
String[]convertedChars={"\",".","+","*","(",")","{","}","[","]","?","/","^","$","|"};
for(Stringc:convertedChars){
w=w.replace(c,"\"+c);
}
returnw;
}
}

測試方法:

@Test
publicvoidtestConvert4Regex()throwsException{
Stringinput="A+";
Stringexpected="A\+";
MethodtargetMethod=TestTarget.class.getDeclaredMethod("convert4Regex",String.class);
targetMethod.setAccessible(true);
Objectactual=targetMethod.invoke(TestTarget.class,newObject[]{input});
assertEquals(expected,actual);
}

⑺ java 私有的屬性,方法和公有的介紹一下

publicclassTest{	
privateStringgen; //私有屬性,表示用戶性別
publicStringgetGen(){ //公開方法,用來獲取這個用戶的性別
returngen;
}
publicvoidsetGen(Stringgen){ //公開方法,用來獲取這個用戶的性別
this.gen=testGen(gen); //當用戶設置性斗或別的燃森時候,調用私有方法來判斷參數是否合法
}

/**
*私有方法,用來測試用戶設置的性別是否為男|女,如果設置不正確默認為男
*@paramgen 可選值,男|女
*@return如果不合法,則返回男
*/
privateStringtestGen(Stringgen){
if("男".equals(gen)||"女".equals(gen)){
returngen;
}else{
return空段伍"男";
}
}


publicstaticvoidmain(String[]args){

}
}

⑻ 一個公有方法裡麵包含私有方法時,該怎樣進行單元測試

如果這個方碼凱胡法復雜到你必須對它進行單元測試,那麼你可遲攔以把它重構到一個獨立的class中,然後針孫棚對這個class來建立單元測試。

閱讀全文

與私有方法如何測試相關的資料

熱點內容
93乘43加91的簡便方法 瀏覽:389
海螺吃了頭暈有什麼方法解決 瀏覽:808
如何寫通項方法 瀏覽:670
小學生如何寫作業快的方法 瀏覽:341
衛星手機夜景拍攝方法 瀏覽:93
怎麼做瘦肚子最快方法 瀏覽:7
考場查詞典技巧和方法 瀏覽:637
魔芋水的製作方法視頻 瀏覽:491
同分母分數加減法教學方法分析 瀏覽:321
平焊單面焊雙面成型的教學方法 瀏覽:601
查詢電腦圖片有多張的方法 瀏覽:429
兒童口腔炎的治療方法 瀏覽:340
七星漂走漂解決方法 瀏覽:978
醫療垃圾微生物殺滅率檢測方法 瀏覽:124
漢服打結方法圖片 瀏覽:259
花繩最簡便的方法怎麼樣玩 瀏覽:521
宮頸糜爛最好的治療方法 瀏覽:695
檢測大分子蛋白質的方法 瀏覽:668
如何創建新的教學方法 瀏覽:897
痘印快速消除的方法 瀏覽:907