4 回答

TA貢獻1789條經驗 獲得超10個贊
看你的mysql當前默認的存儲引擎:
mysql> show variables like '%storage_engine%';
你要看某個表用了什么引擎(在顯示結果里參數engine后面的就表示該表當前用的存儲引擎):
mysql> show create table 表名;

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

TA貢獻1827條經驗 獲得超8個贊
因為Mockito使用繼承的方式實現mock的,用CGLIB生成mock對象代替真實的對象進行執行,為了mock實例的方法,你可以在subclass中覆蓋它,而static方法是不能被子類覆蓋的,所以Mockito不能mock靜態方法。
但PowerMock可以mock靜態方法,因為它直接在bytecode上工作,類似這樣:
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!"));
}
}
添加回答
舉報