使用最新版本的 Compose 1.2.0 运行 Robolectric 单元测试时,测试createAndroidComposeRule失败并出现以下错误:
MyActivity 已经设置了内容。如果您已使用 ComposeView 填充 Activity,请确保在该 ComposeView 上调用 setContent,而不是在测试规则上调用;并确保
setContent {}在 ComposeTestRule 运行后完成调用
来自失败测试之一的代码:
composeTestRule.setContent {
Column {
Text(textTitle)
DemoScopedInjectedViewModelComposable()
}
}
Run Code Online (Sandbox Code Playgroud) 我开始登录活动,并在Espresso测试中使用:
onView(withId(R.id.username)).perform(typeText("USERNAME"));
Run Code Online (Sandbox Code Playgroud)
我希望该字段中的文本为"USERNAME",但有时我会收到"SERNAME",其他人会收到"UERNAME".
它大部分时间都可以工作但有时会失败,特别是在重启手机后.
以下是重现该错误的示例代码:https: //github.com/neoranga55/CleanGUITestArchitecture
这是问题的根源:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>debug { debuggable true })adb shell pm grant com.myapp.name android.permission.ACCESS_MOCK_LOCATION命令的结果为:
不允许的操作:java.lang.SecurityException:权限android.permission.ACCESS_MOCK_LOCATION不是可更改的权限类型”
如果我转到手机上的开发人员选项并进行设置Setting >> Developer Option >> Select Mock location app。
我需要进行自动测试,因此显然进入电话设置的选项无效,因为在每次安装该应用程序时都会重置该选项,因此我需要adb选项才能工作。