我在使用espresso测试活动启动时遇到此错误.
android.support.test.espresso.base.DefaultFailureHandler $ AssertionFailedWithCauseError:想要匹配1个意图.实际上匹配了2个意图.
令人惊讶的是,相同代码的其他活动启动测试正在通过.
@RunWith(AndroidJUnit4.class) public class HomeActivityTest { @Rule public final IntentsTestRulemHomeActivityRule = new IntentsTestRule (HomeActivity.class); @Test public void testFundTransferActivityStarted() { onView(withId(R.id.button_fund_transfer)).perform(click()); intended(hasComponent("mypackage.FundTransferActivity")); } }
按钮单击只需使用startActivity启动FundTransfer活动.
你能粘贴你得到的完整错误信息吗?
错误消息也将匹配2 Intents的配置.如果这两个意图具有相同的配置,则意味着您正在调用startActivity
两次,即在测试开始和测试结束之间.以下答案适用于最终两次调用相同Intent的特定情况.
两次通话是完全合法的案例.例如,
第1步:点击Button1
以启动图库并选择一个图像并显示ImageView1
(最初ImageView1
是GONE
,现在是它VISIBLE
).
第2步:点击ImageView1
再次启动图库.
现在,如果您想测试"点击ImageView1
应该启动图库",那么您不能简单地点击,ImageView1
因为它最初不可见.你需要先点击Button1
.如果这样做,则需要两次启动Gallery .
因此intended(hasComponent("mypackage.FundTransferActivity"));
不会奏效.而是使用:intended(hasComponent("mypackage.FundTransferActivity"), times(2));