我正处于制作应用程序的早期阶段,我经常对数据库或与之交互的代码进行更改。因此,我希望始终使用干净的数据库进行我的测试运行(不是自动化 - 只需在模拟器上进行简单的旧手动测试)。
目前,我通过确保在运行其他测试运行之前删除了应用程序来实现此目的。这有效,但很乏味。我想知道是否有办法自动化这个,所以每次我构建应用程序时,数据库也会被清理。理想情况下,打开/关闭它应该很容易,因为在某些情况下我确实希望将旧数据保存在数据库中。
答案 0 :(得分:0)
您可以添加BroadcastReceiver
,以便在升级应用时擦除数据库。首先将其添加到AndroidManifest.xml
:
<receiver android:name=".AppUpdateReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>
然后创建一个名为AppUpdateReceiver
的类:
public class AppUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (BuildConfig.DEBUG) {
// Wipe database
}
}
}
每次使用调试APK升级应用程序时都应擦除数据库。
答案 1 :(得分:0)
如果您正在使用Android Studio(或使用gradle在不同的IDE中构建),可能每次都使用gradle任务将干净的数据库复制到您的模拟器?像下面的东西。
task pushCleanSb(type: Exec, dependsOn: 'installDebug') {
android.adbExe, 'shell', 'push', '<local-clean-database-filepath>, '<remote--database-path'
}
如果需要,可以很容易地添加一个开关来关闭它,例如通过使用成绩脚本中定义的布尔值。如果您的应用已创建并在设备上保留任何内容,您还可以使用rm
shell命令删除临时文件。