Android SQLite的测试用例
关于为SQLite编写测试用例的问题 我试着写一个测试,但失败了 Android Studio在以下代码的两行错误上显示了错误java.lang.UnsupportedOperationException。也许有人能告诉我哪里出了问题Android SQLite的测试用例,android,sqlite,automated-tests,Android,Sqlite,Automated Tests,关于为SQLite编写测试用例的问题 我试着写一个测试,但失败了 Android Studio在以下代码的两行错误上显示了错误java.lang.UnsupportedOperationException。也许有人能告诉我哪里出了问题 public class DeviceDatabase { private SQLiteDatabase db; private DeviceSQLiteHelper dbHelper; /** * Constructor
public class DeviceDatabase {
private SQLiteDatabase db;
private DeviceSQLiteHelper dbHelper;
/**
* Constructor
*
* @param context
*/
public DeviceDatabase(Context context) {
dbHelper = new DeviceSQLiteHelper(context);
db = dbHelper.getWritableDatabase();
}
/**
* close sqlite database
*/
public void close() {
db.close();
}
/**
* Create new device
* @param
*/
public boolean createDevice(String bt_name, String bt_addr, String bdx_name) {
ContentValues contentValues = new ContentValues();
contentValues.put(DeviceSQLiteHelper.BT_NAME, bt_name);
contentValues.put(DeviceSQLiteHelper.BT_ADDR, bt_addr);
contentValues.put(DeviceSQLiteHelper.BDX_NAME, bdx_name);
// Insert into DB
long result = db.insert(DeviceSQLiteHelper.TABLE_NAME, null, contentValues);
if (result != 0 )
return true;
else
return false;
}
...
具有MockContext的测试类。老实说,我不知道它是否可以这样使用
public class DeviceListControlTest {
String bt_addr = "00:01:02:03:03:08";
public DeviceDatabase mDeviceDatabase;
public MockContext mMockContext;
@Before
public void setUp() throws Exception {
// need mock context
mMockContext = new MockContext();
mDeviceDatabase = new DeviceDatabase(mMockContext); // error
}
@Test
public void testCreateDevice() throws Exception {
mDeviceDatabase.createDevice("Hamburg", bt_addr, "HamburgBT");
List<DeviceName> deviceNameList;
deviceNameList = mDeviceDatabase.getDevices();
boolean result = checkItem(deviceNameList, bt_addr);
assertThat(true, is(equalTo(result)));
}
....
公共类设备ListControlTest{
字符串bt_addr=“00:01:02:03:03:08”;
公共设备数据库mDeviceDatabase;
公共MockContext-mMockContext;
@以前
public void setUp()引发异常{
//需要模拟上下文
mMockContext=新的MockContext();
mDeviceDatabase=新设备数据库(mMockContext);//错误
}
@试验
public void testCreateDevice()引发异常{
mDeviceDatabase.createDevice(“Hamburg”,bt_addr,“HamburgBT”);
列出设备名称列表;
deviceNameList=mDeviceDatabase.getDevices();
布尔结果=检查项(deviceNameList,bt_addr);
断言(真实,等于(结果));
}
....
当您在机器上运行单元测试(而不是在Android设备/模拟器本身上)时,会使用Android SDK的存根版本,它会在每次调用任何方法时抛出UnsupportedOperationException
您有2个(好)选项:
当您在您的机器上运行单元测试(而不是在Android设备/模拟器本身上)时,将使用Android SDK的存根版本,它在每次调用任何方法时抛出
UnsupportedOperationException
您有2个(好)选项:
我希望您的DeviceDatabase方法不在onCreate或onUpgrade?否。我现在在问题中添加了更多代码。我希望您的DeviceDatabase方法不在onCreate或onUpgrade?否。我现在在问题中添加了更多代码。谢谢,我将检查建议。