如何在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
相关产品推荐
相关产品推荐

