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!"));
}
}
添加回答
举报