Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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
Java 单元测试SQLiteDatabase代码-如何在仿真器外部实例化DB实例_Java_Android - Fatal编程技术网

Java 单元测试SQLiteDatabase代码-如何在仿真器外部实例化DB实例

Java 单元测试SQLiteDatabase代码-如何在仿真器外部实例化DB实例,java,android,Java,Android,我需要对引用SQLiteDatabase的Android代码运行单元测试;但是,我在仿真器之外(在我的桌面计算机上)实例化此对象的所有尝试都失败了。Android上的JDBC在网络上不被推荐,因此这是不可能的(我可以很容易地用这种方式提供模拟对象)。那么,有什么想法吗?你不能在模拟器或真实设备之外测试android类。如果您想在桌面计算机上运行测试用例,使用JVM而不是Dalvik,它们应该独立于android类。您也可以将android.jar更改为不抛出异常,但我想这不是您想要的。遇到同样的

我需要对引用SQLiteDatabase的Android代码运行单元测试;但是,我在仿真器之外(在我的桌面计算机上)实例化此对象的所有尝试都失败了。Android上的JDBC在网络上不被推荐,因此这是不可能的(我可以很容易地用这种方式提供模拟对象)。那么,有什么想法吗?

你不能在模拟器或真实设备之外测试android类。如果您想在桌面计算机上运行测试用例,使用JVM而不是Dalvik,它们应该独立于android类。您也可以将android.jar更改为不抛出异常,但我想这不是您想要的。

遇到同样的问题,我同意Burak的观点。你在模拟android.db类方面有什么进展吗?您也可以在桌面上使用sqlite4java,但问题是很难为现有Android的SQLlite模型包装提供外观

更新


也许很难,但并非完全不可能。由于我找不到任何现有的项目可以让我在我的开发机器上用Android类测试sqlite,所以我继续并实现了Android的SQLiteOpenHelper和SQLiteDatabase(加上一些其他的小类)作为sqlite4java的包装器,足以满足我的单元测试目的。啊,现在我的android sqlite特定单元测试的执行时间缩短了。1秒。

不清楚您要做什么。一方面,你谈论Android代码的单元测试,然后再谈论你的台式机。我不知道这两个问题之间有什么关系。将代码发送到模拟器进行测试花费的时间太长。我希望能够通过JUnit或TestNG创建、填充db,而无需将代码发送到仿真器。但是,我不能在仿真器之外使用Android sqlite对象。如果您所要做的只是在桌面上的Android之外操作sqlite数据库,那么有很多选择——关键是:相同的代码需要在(仿真器)内部和Android外部工作。也就是说,我需要能够在emulator上和通过桌面上的JUnit/TestNG执行来自android.database包的DB代码。您共享的代码会让我这么做吗?我想我最简单的问题是:如何在main()中使用android.database类打开数据库?我认为最好的方法是用JDBC模拟android.db类-有点奇怪,但不建议在手机上使用JDBC。此方法必须使用不同的类路径进行测试,以便使用桌面sqlite数据库的类优先于android类。我相信这是可行的。db.execSQL调用将映射到语句。execute()一对一调用;游标委托可能有点棘手,但可以管理。在任何情况下,都必须对android.db调用使用某种形式的测试。将代码反复发送到emulator进行测试简直太糟糕了。实际上,您可以在emulator/设备之外测试android类,并且可以在JVM上进行测试!我过去常常破坏Android SDK,然后我用Mockito来模拟我对测试不感兴趣的东西。有没有可能开源你的SQLite包装类?我支持Dan Dyer的请求:请你提供你这样做的源代码?谢谢