You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Pipeline中配置凭据供Android Jetpack Compose测试使用

在Azure Pipeline中为Jetpack Compose UI测试传递Microsoft登录凭据变量

1. 在Azure Pipeline配置保密变量

  • 进入你的Azure Pipeline项目,打开Pipelines > 编辑 > 变量选项卡
  • 创建TEST_USERNAME和TEST_PASSWORD两个变量,填入对应的Microsoft登录凭据
  • 勾选每个变量的保密选项,禁止变量值在构建日志中输出

2. 修改Pipeline的Gradle任务

在azure-pipelines.yml的connectedAndroidTest任务中,通过Gradle项目属性传递变量:

steps:
  - task: Gradle@2
    inputs:
      gradleWrapperFile: 'gradlew'
      tasks: 'connectedAndroidTest -PtestUsername=$(TEST_USERNAME) -PtestPassword=$(TEST_PASSWORD)'
      gradleOptions: '-Xmx3072m'
      publishJUnitResults: false

3. 在Android项目中传递参数给测试

在app模块的build.gradle.kts(或Groovy版build.gradle)中,将Gradle属性注入到测试Instrumentation的参数中:

Kotlin DSL(build.gradle.kts)

android {
    defaultConfig {
        testInstrumentationRunnerArguments += mapOf(
            "testUsername" to project.findProperty("testUsername") ?: "",
            "testPassword" to project.findProperty("testPassword") ?: ""
        )
    }
}

Groovy(build.gradle)

android {
    defaultConfig {
        testInstrumentationRunnerArguments = [
            "testUsername": project.findProperty("testUsername") ?: "",
            "testPassword": project.findProperty("testPassword") ?: ""
        ]
    }
}

4. 在Compose测试代码中读取凭据

通过InstrumentationRegistry获取传递的参数,替代硬编码的测试数据:

import androidx.test.platform.app.InstrumentationRegistry
import androidx.compose.ui.test.junit4.createAndroidComposeRule

class MicrosoftLoginTest {
    private val composeTestRule = createAndroidComposeRule<LoginActivity>()
    private val testUsername by lazy {
        InstrumentationRegistry.getArguments().getString("testUsername") 
            ?: error("testUsername parameter not provided")
    }
    private val testPassword by lazy {
        InstrumentationRegistry.getArguments().getString("testPassword") 
            ?: error("testPassword parameter not provided")
    }

    @Test
    fun validCredentialsLoginSuccess() {
        // 填写用户名密码
        composeTestRule.onNodeWithTag("username_field").performTextInput(testUsername)
        composeTestRule.onNodeWithTag("password_field").performTextInput(testPassword)
        // 触发登录并验证结果
        composeTestRule.onNodeWithTag("login_button").performClick()
        composeTestRule.onNodeWithTag("home_screen").assertExists()
    }
}

额外提示

  • 本地运行测试时,可通过终端手动传递参数:
    ./gradlew connectedAndroidTest -PtestUsername=your-account@outlook.com -PtestPassword=your-password
    
  • 绝对不要在代码中硬编码凭据,也不要在测试日志中打印凭据内容

内容的提问来源于stack exchange,提问作者vasut alexandru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:31:09