2012-10-17 62 views
0

我正在为使用SQLite数据库的Android应用程序执行JUnit测试。我需要创建一个可以被测试用例操纵的测试数据库。数据库需要以已知的配置启动,并针对每个测试用例进行重置。我想通过传递SQLiteOpenHelper作为数据库的文件名(see this article for details)作为null的值可以使用内存数据库。现在我也想为我的一些测试填充数据库表。我在本地文件系统上有一个CSV文件,其中包含一些可用于测试的数据。如何将这些数据存入模拟器或其他设备上的SQLite数据库中进行测试?在Android上测试SQLite数据库

+1

选中此:http://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application/9109728#9109728 –

+0

@YaqubAhmad感谢您的链接。我会在今晚或本周末晚些时候尝试这些建议。 –

回答

2

SQLite库代码中没有内置的CSV导入功能。

但是,sqlite3命令行工具可以导入CSV文件。一旦导入,您就可以使用adb工具将数据库文件复制到设备中。 或者,您可以使用sqlite3的.dump命令来生成SQL命令来重新创建数据库;然后将它们放入一个字符串数组中,或者将它们放入由测试程序读取的文本文件中。

+0

我假设你所指的'sqlite3'工具将在我的桌面命令行上运行。因此,如果我将CSV文件导入到数据库,那么它将保存在我的桌面文件系统中。这种手工工作量很好。现在有没有办法在测试过程中以编程方式将数据库导入到设备?我还需要擦除数据库(可能是在'tearDown()'方法中),这对Android API来说应该不难。我不知道的唯一部分是首先在模拟器上获取数据库。 –