Espresso:当我使用 espresso 单击某个项目时,我如何断言是否启动了特定的 activity
Espresso: How do i assert if a particular activity is launched when i click on a item using espresso
单击视图项后如何在 Espresso 中断言 activity?
onView(withId(com.example.android.notepad.R.id.XYZ)).perform(click());
在你的测试中你可能有这个:
@Rule
public ActivityTestRule<MyActivity> testRule = new ActivityTestRule<>(MyActivity.class);
那么您可以拨打:
testRule.getActivity()
获取Activity
的实例。
刚才的电话
testRule.getActivity() instanceof MyActivity
您应该模拟单击按钮的过程,然后测试堆栈顶部的 activity 是否是您要查找的那个
@RunWith(AndroidJUnit4.class)
public class YourTestClass{
@Test
public void testButton() {
Espresso.onView(ViewMatchers.withId(R.id.yourButtonId)).perform(ViewActions.click());
Assert.assertEquals(getActivityInstance().getClass(), YourActivityThatShouldStart.class);
}
private Activity getActivityInstance() {
final Activity[] currentActivity = {null};
InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
public void run() {
Collection resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED);
if (resumedActivities.iterator().hasNext()) {
currentActivity[0] = (Activity) resumedActivities.iterator().next();
}
}
});
return currentActivity[0];
}
}
在 testButton 函数中,有两行,第一行是点击你的按钮,第二行是检查结果 activity
Espresso 在主线程上工作,所以你很好
单击视图项后如何在 Espresso 中断言 activity?
onView(withId(com.example.android.notepad.R.id.XYZ)).perform(click());
在你的测试中你可能有这个:
@Rule
public ActivityTestRule<MyActivity> testRule = new ActivityTestRule<>(MyActivity.class);
那么您可以拨打:
testRule.getActivity()
获取Activity
的实例。
刚才的电话
testRule.getActivity() instanceof MyActivity
您应该模拟单击按钮的过程,然后测试堆栈顶部的 activity 是否是您要查找的那个
@RunWith(AndroidJUnit4.class)
public class YourTestClass{
@Test
public void testButton() {
Espresso.onView(ViewMatchers.withId(R.id.yourButtonId)).perform(ViewActions.click());
Assert.assertEquals(getActivityInstance().getClass(), YourActivityThatShouldStart.class);
}
private Activity getActivityInstance() {
final Activity[] currentActivity = {null};
InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
public void run() {
Collection resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED);
if (resumedActivities.iterator().hasNext()) {
currentActivity[0] = (Activity) resumedActivities.iterator().next();
}
}
});
return currentActivity[0];
}
}
在 testButton 函数中,有两行,第一行是点击你的按钮,第二行是检查结果 activity
Espresso 在主线程上工作,所以你很好