4 回答

TA貢獻1773條經驗 獲得超3個贊
google mock按道理講只能mock虛函數,這是因為在單元測試中,首先定義一個mock類(mockTest),public繼承要mock的函數(fun1())所在的類(Test),在mockTest中調用宏MOCK_METHODn,該宏應該是在mockTest中聲明一個同名的虛函數(virtual fun1()),因為測試用例中有關fun1()的函數都是通過mockTest對象進行調用的,因此,所有涉及到fun1()的函數均是mockTest類中重新定義的那個。對于非虛函數,由于其可能在類中的其它函數fun2()中被調用,假設mockTest并沒有重新定義fun2(),雖然使用了mockTest類對象去調用fun2(),但是fun2()是從Test中繼承的,fun2()中調用的fun1()必然是Test中的原始函數,并不是mock之后的fun1(),所以我覺得這就是google mock 無法mock非虛函數的原因。

TA貢獻1817條經驗 獲得超14個贊
可以把mock理解為空白對照。嚴格來講,mock是指只加轉染試劑不加病原體,以排除轉染試劑對細胞的影響;但是有時候可能實驗者連轉染試劑都沒有加,直接用沒有處理過的細胞作為mock對照。再有,如果轉染的不是病原體,而是質粒,轉入空白質粒的細胞也可以作為mock

TA貢獻1884條經驗 獲得超4個贊
如果被測程序、系統或對象,我們稱之為A,那么Stub和Mock指的并不是A,而是測A的過程中,A需要與之交互的程序、系統或對象B。Stub,也即“樁”,很早就有這個說法了,主要出現在集成測試的過程中,從上往下的集成時,作為下方程序的替代。作用如其名,就是在需要時,能夠發現它存在,即可。就好像點名,“到”即可。Mock,主要是指某個程序的傀儡,也即一個虛假的程序,可以按照測試者的意愿做出響應,返回被測對象需要得到的信息。也即是要風得風、要雨得雨、要返回什么值就返回什么值。
添加回答
舉報