在测试用例 espresso 之前清除数据库

2023-12-25

我使用 espresso 来清除我的应用程序中的数据库 我像这样设置活动

@Rule
@JvmField
val activity = ActivityTestRule<PhotoPrinterActivity>(PhotoPrinterActivity::class.java,false,false)

这是我之前的功能

@Before
open fun setup() {
    clearDatabase()
    activity.launchActivity(null)
    // Waiting for start app success fully

}

这是我清晰的数据库代码

fun clearDatabase() {
    val databaseList = InstrumentationRegistry.getInstrumentation().targetContext.databaseList()
    for (database in databaseList) {

        // when transaction rollback files exists they are always locked so we can't delete them
        if (database.contains(".db-journal")) {
            InstrumentationRegistry.getTargetContext().deleteDatabase(database)
            continue
        }

        // when using transaction write ahead logging then this db files are listed but often they don't exist
        if (database.contains(".db-wal") || database.contains(".db-shm")) {
            InstrumentationRegistry.getTargetContext().deleteDatabase(database)
            continue
        }
        Log.v("EspressoMacchiato", "deleting " + database)
        var databasePath = InstrumentationRegistry.getInstrumentation().targetContext.getDatabasePath(database)
        if (databasePath.exists()) {
            InstrumentationRegistry.getInstrumentation().targetContext.deleteDatabase(database)
        }
    }

}

问题是当清除数据库成功并执行将一些数据添加到数据库时,

android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:786)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)

任何人请帮助我!非常感谢!


Use @课前 http://junit.sourceforge.net/javadoc/org/junit/BeforeClass.html and 仪器注册中心 https://developer.android.com/reference/android/support/test/InstrumentationRegistry.html在您的 espresso 测试中删除数据库:

@BeforeClass
public static void beforeClass() {
    InstrumentationRegistry.getTargetContext().deleteDatabase("database_name");
}

为了防止同时执行多个浓缩咖啡测试时出现错误,请使用Android 测试协调器 https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator。它将分别执行所有这些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在测试用例 espresso 之前清除数据库 的相关文章

  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • 修改列表时,Jetpack composecollectAsState() 未收集热流

    当我使用collectAsState the collect 仅当传递新列表时触发 而不是在修改和发出列表时触发 查看模型 HiltViewModel class MyViewModel Inject constructor ViewMod
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 科特林;按多个字段分组

    如何在代码中按三个或更多字段进行 groupBy 我的代码如下 val nozzleSaleReport nozzleStateList groupBy it shift id it createUser id it nozzle id H
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1

随机推荐

  • apk 在 docker 构建上返回 DNS 查找错误

    当运行任何apk add 命令同时docker build I get DNS lookup error fetch http dl cdn alpinelinux org alpine v3 8 main x86 64 APKINDEX
  • 如何让 Docker Gitlab CI 运行程序访问其父主机上的 Git?

    Gitlab 设置在我们的内部网络上http gitlab http gitlab 同一台机器上的 Docker 容器无法连接到它 如何配置 docker 以使其知道 gitlab 是其父级 当 Gitlab CI 尝试运行构建 在 Doc
  • 使用 ssl 的 boost asio 的详细程度

    有没有办法使用 boost asio 让 ssl 握手对我更明显 我收到错误 asio ssl 错误 我只是想要更多的冗长 因为这条消息对我来说几乎没有任何意义 我发现boost asio与ssl使用openssl 我只需要使用调试标志重新
  • 旋转绘图点以相对于另一组点重新投影

    我有一个点数据框 绘制两个多边形的轮廓 一个与另一个多边形成直角 如下所示 以下是绘制该图的数据 outlines lt structure list sample ids structure c 1L 1L 1L 1L 1L 1L 1L
  • 如何将 JS Console 注入到任何页面? jsconsole.com

    出于教育目的 我想remotely调试在我的移动设备上运行的应用程序 我无权访问源代码 只要我了解这是可能的http jsconsole com http jsconsole com直接喷射 http jsconsole com injec
  • Scenekit 中相机不跟随飞机

    我有一架正在飞行的飞机 我正在跟踪它 并且我还显示了飞机所遵循的路径 我正在绘制圆柱体作为绘制路径的线 类似于在两点之间画一条线 我有一个cameraNode 最初设置为 0 200 200 那时我可以看到飞机 但当我开始飞行时 它走出了屏
  • 循环向量化给出了不同的答案

    我正在构建一些单元测试 发现我的代码给出了slightly矢量化时会产生不同的结果 在下面的示例中 一个数组a一维求和并添加到初始值x 大多数元素a太小而无法改变x 代码是 module datamod use ISO FORTRAN EN
  • Int 列表与 Int -> Int 列表相比,类型相同吗?

    为什么这两个有相同的类型 ghci gt k Int Int ghci gt k Int gt Int Int gt Int EDIT per 加布里埃尔 冈萨雷斯 https stackoverflow com users 1026598
  • 如何向 Laravel 工厂传递参数?

    我有一个users表和一对零 一的关系businesses表 users user id gt businesss user id 在我的users表我有一个鉴别器 它告诉我用户是否属于商务类型 因此我需要了解有关的详细信息business
  • iOS Apple TestFlight 版本需要什么样的证书和配置文件?

    我计划通过新的 Apple TestFlight 应用程序在 iOS 8 设备上发布 iPhone 应用程序的测试版 为此需要什么样的证书和配置文件 我需要一个生产证书和分配配置文件 可用的是这些 Certificate Pending D
  • 如何获得 sed 中的第 10 个分组值?

    这是我的 sed sed s a z A Z 0 9 a z A Z 0 9 a z A Z 0 9 a z 10 g 我试图获得第 10 个分组值 但是 它给出的第一个分组值是 0 零 如何获得第10个分组值 能否得到第10个分组值 se
  • JSON 包含条件

    我的设置 Rails 2 3 10 Ruby 1 8 7 假设我有这个代码片段 user User find 1 user to json include gt posts 如果我想包含具有特定条件的用户帖子 例如仅一周前的帖子 怎么办 定
  • 如何跟踪 php 函数/代码的处理持续时间

    我正在开发一个基于浏览器的游戏 我想知道哪些功能需要最多时间来处理等等 你们有人知道我可以从什么开始吗 使用 PHP 5 3 听起来像你想要的xhprof http pecl php net package xhprof 它擅长分析
  • Objectdatasource 和 Gridview:排序、分页、过滤

    我使用实体框架 1 0 并尝试使用可以访问我的外观的对象数据源提供 Gridview 问题是 这似乎特别困难 而且在互联网上还没有看到任何真正能做到我想要它做的事情 对于那些知道的人来说 使用对象数据源提供的网格视图无法自动排序 因此您必须
  • 无法加载资源:服务器响应状态为 403 - Image

    我发现角度和加载图像时遇到一些问题 我从 API 检索图像的链接 并将恢复的链接分配给图像的来源 但是 某些图像无法加载 并且我在 Chrome 控制台中收到以下错误 Failed to load resource the server r
  • UL 列出带有样式十进制数字的项目[重复]

    这个问题在这里已经有答案了 我需要创建一组列表项 其中需要使用边框半径和背景颜色设置列表项编号 小数 的样式 这是我希望列表项的外观的快照 我尝试在 li 上放置边框半径和背景 但我无法获得我正在寻找的输出 这里有一个工作链接 http j
  • 如何迭代 S3 存储桶中的文件?

    我有大量文件 gt 1 000 存储在 S3 存储桶中 我想迭代它们 例如 在for循环 使用以下方法从中提取数据boto3 然而 我注意到 根据http boto3 readthedocs io en latest reference s
  • 如何在不使用 Perl 和 LWP 获取页面的情况下获得最终 URL?

    我正在做一些网页抓取 http en wikipedia org wiki Web scraping使用 Perl 的 LWP 我需要处理一组 URL 其中一些可能会重定向 一次或多次 如何使用 HEAD 方法获得解决所有重定向的最终 UR
  • 在 WPF Tabcontrol 标头模板中显示 SelectedIndex

    我的应用程序中有 1 n 个选项卡控件 具有以下 XAML 设置
  • 在测试用例 espresso 之前清除数据库

    我使用 espresso 来清除我的应用程序中的数据库 我像这样设置活动 Rule JvmField val activity ActivityTestRule