我有一个测试,我想在espresso中工作以获取应用程序中的所有(100多个)活动,并断言它们启动了一个意图来启动对话框活动。该测试可以在列表中的第一个活动(或者如果只有一个活动)上完美运行,但在第二个活动上则失败,因为espresso尝试将其强制转换为第一个活动。
我必须使用ActivityTestRule而不是直接从上下文启动该活动,否则Intendo意图的断言不起作用。
大多数文档显示,每次测试都将espresso设置为具有一项活动,在我的情况下,这是不可能的,因为我正在动态加载活动列表。
Espresso正在保存某种我无法弄清楚如何清除的内部状态。有谁知道如何在for循环的断言之间清除它?
或者是否有ActivityTestRule以外的其他类,但没有符合预期目的的内部状态?
以下是我要测试的示例:
ActivityInfo[] activities =
appContext
.getPackageManager()
.getPackageInfo(appContext.getPackageName(), PackageManager.GET_ACTIVITIES)
.activities;
for (ActivityInfo activityInfo : activities) {
String className = activityInfo.name;
ActivityTestRule activityTestRule =
new ActivityTestRule<>((Class<Activity>) Class.forName(className));
Intent intent = new Intent()
.setClassName(appContext, className)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activityActivityTestRule.launchActivity(intent);
intended(hasComponent(ExpectedDialogActivity.class.getName()));
activityActivityTestRule.finishActivity();
}