安卓浓缩咖啡无法测试登录



我正在尝试通过espresso 测试登录屏幕UI功能

我如何模拟活动,因为它要求在测试前启动活动。

我正在初始化活动中的aws

override fun onCreate(savedInstanceState: Bundle?) {
(application as App).getAwsSessionComponent().inject(this)
}

我在上面的行中遇到错误,我如何在测试时跳过实际的aws会话创建

我试着写测试用例如下

@Rule
@JvmField
var mActivityScenarioRule = ActivityScenarioRule(LoginActivity::class.java)

@Test
fun testLoginSuccess() {

onView(ViewMatchers.withId(R.id.edittext_login_email))
.perform(typeText("xyz@email.com"))
onView(ViewMatchers.withId(R.id.edittext_login_password))
.perform(typeText("pwd123"))
onView(ViewMatchers.withId(R.id.button_login))
.perform(click())
}

对我最有效的方法是创建一个特殊的mockbuildType,我的依赖注入模块在其中创建了API的模拟实例;真实的东西";。

在src/androidTestMock下创建浓缩咖啡测试("Mock"告诉UI测试使用mockbuildType(。在测试中,您可以检索模拟类来模拟不同的API响应。请确保告诉您的依赖注入为模拟类使用Singleton(例如@Singleton for Dagger(,否则您的测试代码可能会得到与实际代码不同的实例。

设置所有这些都不是小事,有时也很脆弱。确保从UI测试中获得足够的好处。

最新更新