当前位置: 首页 > 知识库问答 >
问题:

Android Gradle在非调试版本上运行测试

张昊穹
2023-03-14

我有一个有三种不同构建类型的项目:debug、beta和Release。我的测试包总是为调试构建而创建的,但是QA使用的是beta构建,我们希望QA在他们大量的设备上运行这些测试。

我试图为QA创建一个测试apk,该apk由与beta构建相同的密钥签名。翻阅Android-Gradle文档,我没有看到任何东西告诉我不能这样做,但我没有看到任何配置它的东西。我是否可以配置在组装测试APK时使用的密钥库?或者有没有一种方法可以创建一个未签名的测试APK?

共有1个答案

印振国
2023-03-14

这对您的问题是一个不完整的回答,因为它记录了您不能做的事情,但是ConnectedAndroidTest任务(在您的项目中运行AndroidTest测试的任务)是硬编码的,以针对Debug生成类型运行的,我看不到将其指向其他生成类型的方法。

参考以下建议:是否有一种方法在Gradle中列出任务依赖项?和检查任务依赖关系树时,如果运行:

./gradlew tasks --all

您可以在输出中得到以下内容:

Verification tasks
------------------
app:check - Runs all checks. [app:lint]
app:connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices. [app:assembleDebug, app:assembleDebugTest]
app:connectedCheck - Runs all device checks on currently connected devices. [app:connectedAndroidTest]
app:deviceCheck - Runs all device checks using Device Providers and Test Servers.

ConnectedAndroidTest任务的文档声明它针对Debug运行测试,任务依赖项(您可以通过-all标志看到)确认该任务依赖于AssembleDebug

添加其他生成类型和风格似乎不会影响对内置debug类型的依赖关系。

如果Gradle-fu比我的Gradle-fu更大,您可能会重新连接任务,使测试依赖于不同的构建类型,但这样做很可能是脆弱的,因为它必然依赖于Android Gradle插件中不支持的API。

不过,为了最直接地回答您的问题,如果您只想对使用不同证书的生成运行测试,您可以更改debug生成上的签名配置以使用beta证书:

android {
    signingConfigs {
        beta {
            keyAlias 'key'
            keyPassword 'password'
            storeFile file('/path/to/beta_keystore.jks')
            storePassword 'password'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.beta
        }
        beta {
            signingConfig signingConfigs.beta
        }
    }
}

我对它进行了测试,并且能够通过这种方式对使用自定义密钥库的调试构建运行androidTest目标。但是,我怀疑这解决了您的问题,因为我怀疑您想要针对beta构建运行测试,而不是使用beta证书的调试构建。

 类似资料:
  • 我正在VSTS中使用“基于云的ApacheJMeter负载测试”任务执行JMeter脚本。我有一个响应断言作为JMeter测试的一部分。我能够通过VSTS中的发布定义触发测试。当断言失败时,我希望发布失败。目前,发布成功,并发出如下警告: 2018-02-21T18:23:31.1885342Z##[警告][异常] 1次出现['测试'、'HTTP请求'、'网络异常']:请下载测试日志以查看此url

  • 在Android 19及以下版本上使用JunitParams运行程序时,我看到了一个异常。 使用最新的Android测试支持库编写简单的测试套件并在Android 19或更低版本上执行 下面的测试套件将重现这个问题 测试应该执行并通过。 不运行测试,因为"找不到测试" 我检查了日志,我看到以下异常发生。 下面是我的文件。

  • 问题内容: 当我运行WebDriver测试时,它们根本无法工作。到目前为止,我已经完成了以下操作:1)我更新了注册表项,使其包含FEATURE_BFCACHE 2)所有区域的保护模式设置都相同3)禁用了增强保护模式4)我也尝试过在我的计算机上设置IEDriverServer路径 测试在Chrome,Firefox等上正常运行,但是在IE11上运行时,我得到: 我正在使用eclipse用Java编写

  • 问题内容: 我使用的是大猩猩网络套接字,我想在本地运行它,是指使用以下chrome客户端或其他推荐的工具……当我进入调试模式时,出现错误 我用 当我在Chrome或网络套接字客户端中运行以下网址时,出现错误 websocket:不是websocket握手:在“连接”标头中找不到“升级”令牌 我想运行它 并为本地模拟提供令牌,我该怎么做? 要检查它,我使用Chrome的Simple WebSocke

  • 我试图运行一个简单的登录测试,但我被困在这个。Appium不打开应用程序:( 下面是Java中的clode类: 有人知道我做错了什么吗?我是缺少任何导入还是语法错误?

  • 我已经使用Appium和Java以及TestNG为Android应用程序编写了一些测试。我的测试在模拟器上本地运行良好,但当我将它们上传到设备场时,我的测试总是失败。我已经尽可能地简化了我的测试,但它仍然不起作用。目前,我尝试运行的测试会在打开应用程序时出现的提示中找到并单击“允许权限”按钮。代码: 观看Device Farm提供的视频,我可以看到它打开并立即关闭我的应用程序。它甚至没有像应该的那