我正在为Activity
撰写Espresso测试,其中包含用于使用Google帐户进行身份验证的按钮以及用于使用Facebook帐户进行身份验证的按钮。在我的测试中,我想模拟每个按钮上的点击,并确保它启动这些第三方提供的正确组件。
似乎有两种可能的选择:
Intent
。我最初选择了#2选项,因为我发现使用Activity
测试之外的组件测试用户界面很困难。
首先,我为Google按钮创建了一个测试。代码如下:
@Test
public void testGoogleAuthButton() {
// Start the Activity under test.
activityRule.launchActivity(new Intent());
// Click the Google button.
onView(withId(R.id.googleSignUpButton)).perform(click());
// Ensure the `SignInHubActivity`, an `Activity` provided by the Google APIs, was launched.
intended(hasComponent(SignInHubActivity.class.getName()), times(1));
// Simulate a press on the back button to close the account chooser.
UiDevice.getInstance(getInstrumentation()).pressBack();
}
此测试通过,但我不确定这是否是执行此测试的正确方法。接下来,我为Facebook按钮尝试了类似的技术:
@Test
public void testFacebookAuthButton() {
// Start the Activity under test.
activityRule.launchActivity(intent);
// Simulate a click on the Facebook button.
onView(withId(R.id.facebookSignUpButton)).perform(click());
// Ensure the `FacebookActivity`, an `Activity` provided by the Facebook APIs, was launched.
intended(hasComponent(FacebookActivity.class.getName()), times(1));
// Simulate a press on the back button to close the current Activity.
UiDevice.getInstance(getInstrumentation()).pressBack();
}
奇怪的是,这个测试失败了,并注意到没有Intent
匹配且没有记录。
我的问题: