如何在 Android Studio 中使用 android.test.mock

2023-11-25

我正在尝试使用模拟上下文在 Android Studio 中对 Android 项目进行单元测试。问题是,包android.test.*在项目中不可见。

我不确定应该向 Gradle 添加什么才能导入它。我试过com.android.support.test:rules:1.0.2 and androidx.test:rules:1.1.1(IDE 提出的建议之一),但这不是我正在寻找的。

构建.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.myApp"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //noinspection GradleCompatible
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    testImplementation 'com.android.support.test:rules:1.0.2'
}

apply plugin: 'com.google.gms.google-services'

编译时出现错误信息:

错误:包 android.test.mock 不存在

我应该在 gradle 中添加什么才能访问android.test包裹?


其实你可以访问android.test.mock从您的单元测试中获取访问权限MockContext班级。对于 AndroidX 项目,您可以在应用程序模块中添加以下内容build.gradle:

android {
    ...
    useLibrary 'android.test.mock'
}

Source: https://developer.android.com/training/testing/set-up-project

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

如何在 Android Studio 中使用 android.test.mock 的相关文章

随机推荐

  • 是否有一个 Django 模板过滤器可以处理“...more”,并且当您单击它时,它会显示更多文本?

    假设我有一个很大的段落 我只想显示前 15 个单词 之后 该人单击 更多 以查看其余内容 刚刚启动它 似乎可以做你想做的事情 并且不依赖任何外部 JS 库 免责声明 我还没有在 IE 中尝试过这个 但 chrome 和 firefox 工作
  • 如何从另一个线程更新 GUI 上的文本框[重复]

    这个问题在这里已经有答案了 我是 C 新手 我正在尝试制作一个简单的客户端服务器聊天应用程序 我的客户端窗口窗体上有 RichTextBox 我正在尝试从另一个类中的服务器更新该控件 当我尝试这样做时 我收到错误 跨线程操作无效 控制 te
  • git log --since=<日期> 选项 [重复]

    这个问题在这里已经有答案了 我目前正在通过 Pro Git 这本书学习Git 在书中 当讨论不同的选择时git log since
  • `#pragma Once` 是否已进入 C++0x 中?

    标题说明了一切 有 pragma once已标准化为 C 0x 我不知道有哪个编译器不提供它的实现 并且几乎总是具有相同的语义和名称 All pragma指令导致实现以实现定义的方式运行 这在 C 03 和最新的 C 0x 草案 n3225
  • 在 symfony 2 中验证小数

    我使用 Doctrine 将 symfony2 实体映射到表 属性之一是 var decimal price ORM Column name price type decimal nullable false private price W
  • Erlang:RPC 到节点并在该节点上输出

    有没有办法对节点进行 rpc 调用 但将输出显示在该节点上 而不仅仅是在调用节点上 事实上 如果调用节点不显示输出 我不会太担心 虽然我明白我可以使用 rpc call Node erlang display someTerm 这将在 No
  • 从 Pandas 专栏中删除 Twitter 提及

    我有一个数据集 其中包含来自 Twitter 的推文 其中一些也有用户提及 例如 thisisauser 我尝试在进行其他清理过程的同时删除该文本 def clean text row options if options lowercas
  • perl 反引号:使用 bash 而不是 sh

    我注意到 当我在 perl 中使用反引号时 命令是使用 sh 而不是 bash 执行的 这给我带来了一些问题 我怎样才能改变这种行为 以便 perl 将使用 bash 附言 我尝试运行的命令是 paste filename lt cut d
  • 如何在 java 7 中启用 TLSv1.2?

    我正在尝试使用命令 mvn Dhttps protocols TLSv1 TLSv1 1 TLSv1 2 install mvn Dhttps protocols TLSv1 2 install 在具有 java 1 7 的计算机中启用 T
  • 实体框架 - 实体只读属性映射到相关表的列

    我有一个有趣的问题需要解决 但是虽然很常见 但看起来使用实体框架不容易实现 有两个表 Player Id TeamId FirstName LastName Team Id Name IsProfessional 玩家只能属于一支球队 使用
  • R 闪亮中不存在此 Font Awesome 图标(“齿轮”)

    我今天遇到了一个奇怪的情况 我在 R Shiny 上开发一个应用程序几天了 它在我的笔记本电脑上运行 今天我更换了电脑 安装了新的 Windows 当我运行我的应用程序时 它给了我这个错误 This Font Awesome icon ge
  • 将带有默认值的数组作为参数传递给 int main()

    我很难将数组作为参数传递给int main 与默认值 例如 int main int a 效果很好 一样 int main int a 1 Passing int main 数组也能很好地工作 int main int a 3 然而 将这两
  • 如何从字符串确定日期格式?

    这个问题今天已经被问过 但所有者似乎已经删除了它 即使它有 4 票赞成 不过这个问题太有趣了 我决定再次自己发帖 我有一个 Javascript 对象 它有一个带有日期字符串的属性 现在我想为该属性设置一个新的日期时间 但是在不知道其格式的
  • 如何在Android上管理startActivityForResult

    在我的活动中 我通过以下方式从主要活动中调用第二个活动startActivityForResult 在我的第二个活动中 有一些方法可以完成此活动 可能没有结果 但是 只有其中一个方法返回结果 例如 我从主要活动中调用第二个活动 在此活动中
  • Sqlite:如何重置所有数据库表?

    我想要一个调试函数来执行此操作 但我不知道该函数是否已经存在 为我的每个表检查并使用 删除表 将是一件痛苦的事情 帮助表示赞赏 由于数据库只是一个文件 因此您确实可以删除它 如果您想要更自动化的操作 您可以使用以下命令以编程方式完成所有操作
  • 内核如何通知用户空间程序中断发生

    我正在编写一个用户空间程序和一个内核空间设备驱动程序 目标 一旦发生中断 用户空间程序需要快速执行某些操作 我的天真的方法 用户空间程序使用ioctl调用wait event interruptible 内核ISR调用wake up int
  • CJS 和 ES6 模块之间的语法差异

    在 CJS 模块中我会使用export and var plugin require plugin 导出 导入在 ES6 模块中我会使用export and import as plugin from plugin 导出 导入 还有更多语法
  • 如何使用某些 CGContext 函数重置以标识“当前变换矩阵”?

    我正在 CTM 上进行一系列平移和旋转 在某些时候我需要将其重置为身份 然后再进一步进行转换 我找不到任何正确的方法来做到这一点 显然 应该有一个名为 CGContextSetCTM 左右的函数 并且由于效率是关键 所以我不想使用 CGCo
  • 更改 Erlang 中的默认“home”路径以解决 RabbitMQ 启动错误

    我是rabbitmq的新手 也是erlang的新手 我遇到了一个问题 我无法启动rabbitmq 因为 erlang cookie 的 主 位置已更改 我已经运行命令 init get argument home 返回 ok H 这是一个问
  • 如何在 Android Studio 中使用 android.test.mock

    我正在尝试使用模拟上下文在 Android Studio 中对 Android 项目进行单元测试 问题是 包android test 在项目中不可见 我不确定应该向 Gradle 添加什么才能导入它 我试过com android suppo