Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite的测试用例_Android_Sqlite_Automated Tests - Fatal编程技术网

Android SQLite的测试用例

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

关于为SQLite编写测试用例的问题

我试着写一个测试,但失败了

Android Studio在以下代码的两行错误上显示了错误java.lang.UnsupportedOperationException。也许有人能告诉我哪里出了问题

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设备/模拟器本身上)时,将使用Android SDK的存根版本,它在每次调用任何方法时抛出
    UnsupportedOperationException

    您有2个(好)选项:

  • 在Android设备本身上运行测试(请参阅仪器测试)
  • 使用机械分子

  • 我希望您的DeviceDatabase方法不在onCreate或onUpgrade?否。我现在在问题中添加了更多代码。我希望您的DeviceDatabase方法不在onCreate或onUpgrade?否。我现在在问题中添加了更多代码。谢谢,我将检查建议。