4 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
在進(jìn)行對(duì)象方法的引用時(shí),方法中參數(shù)的個(gè)數(shù),參數(shù)的數(shù)據(jù)類型與原方法中定義的要一致,否則編譯器會(huì)出錯(cuò)。注意構(gòu)造方法后面括號(hào)內(nèi)帶幾個(gè)參數(shù)或者不帶參數(shù)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
看你的mysql當(dāng)前默認(rèn)的存儲(chǔ)引擎:
mysql> show variables like '%storage_engine%';
你要看某個(gè)表用了什么引擎(在顯示結(jié)果里參數(shù)engine后面的就表示該表當(dāng)前用的存儲(chǔ)引擎):
mysql> show create table 表名;

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
mock測試方法用于構(gòu)造對(duì)象,而不是你說的方法
比如,你現(xiàn)在要調(diào)用數(shù)據(jù)庫,但這塊也許還沒完成,無法用orm框架進(jìn)行映射,你就可以先new一些這樣的對(duì)象,將它們保存或當(dāng)作參數(shù)傳入等
比如某接口中(UserDao)你有一個(gè)方法叫:queryUser(String name),但你的真正實(shí)現(xiàn)未完成,你就可以先寫一個(gè)Mock類,MockUserDaoImpl
queryUser(String name){
User user = new User();
user.setName...
user.setPassword...
}
你說的兩種方法,不需要mock,直接調(diào)用方法,傳入?yún)?shù),然后利用斷言
assert*

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
因?yàn)镸ockito使用繼承的方式實(shí)現(xiàn)mock的,用CGLIB生成mock對(duì)象代替真實(shí)的對(duì)象進(jìn)行執(zhí)行,為了mock實(shí)例的方法,你可以在subclass中覆蓋它,而static方法是不能被子類覆蓋的,所以Mockito不能mock靜態(tài)方法。
但PowerMock可以mock靜態(tài)方法,因?yàn)樗苯釉赽ytecode上工作,類似這樣:
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.testng.PowerMockTestCase;
import org.testng.Assert;
import org.testng.annotations.Test;
@PrepareForTest(AbstractAnimal.class)
public class AbstractAnimalTest extends PowerMockTestCase {
@Test
public void shouldGetMockedHello() {
PowerMockito.mockStatic(AbstractAnimal.class);
PowerMockito.when(AbstractAnimal.getHello()).thenReturn("Hello mocked animal world!");
String greetings = AbstractAnimal.getHello();
Assert.assertTrue(greetings.equals("Hello mocked animal world!"));
}
}
添加回答
舉報(bào)