2017-08-03 93 views
1

我有自學gmock並瞭解它的功能。如果我們能嘲笑某些方法並測試我們的流程,那將是非常好的。嘲笑 - 方法與工具

我現在的問題是,我們有龐大的代碼回購其特定流呼籲許多子模塊接口 - 即基礎類方法調用的一些子模塊/子子模塊接口:

bool classA::methodA(uint64_t number) { 
    if (0 == number) { 
    return false; 
    } 
    Foo* p=&obj; 
    while (true && (p->*fptr)(number)) { 
    if (1 == number) { 
     return true; 
    } else if (0 == number%2) { 
     number = number/2; 
    } else { 
     Printer* machine; 
     char* buff; 
     PTR pmf[2]= {&B::Copy, &B::Append}; 
     (machine->*pmf[APPEND])(buff, number); 
     number = 3 * number + 1; 
    } 
    } 
} 

是否有一種方法/機制/拇指規則,通過它我們可以識別/知道所有需要模擬測試我的班級100%代碼的子模塊的方法?

回答

2

這裏沒有必要規則。你只是嘲笑那些需要被嘲笑的東西。沒有更多,沒有更多。

請記住:你寫的單元測試的想法是測試你的單元隔離。這意味着你有時必須「切斷」你的單元對其他代碼的依賴關係。

現在讓我們假設你的代碼是使用一些依賴B.

  • 時,你可以調用你的代碼保持真正的B的地方 - 罰款。那就這樣做。
  • 當B在你的單元測試設置中失敗時,你需要控制什麼B 返回到你的代碼 - 那麼你需要一個模擬。

從這個意義上說,經驗法則是:嘲笑事情,如果你必須。

因此,我們不能告訴你究竟是什麼模擬。相反,你必須退一步:

  • 首先,瞭解如何你想單元測試代碼
  • 然後你看它的依賴
  • 那麼你也許嘗試,當你發生了什麼調用代碼沒有任何嘲笑到位
  • 那麼你從前面的步驟收集的數據得出你的結論