尝试为非启动器活动执行espresso测试时出现问题。我遇到的问题是,在第一次测试时,启动启动器活动而不是被测活动。
这是我的代码:
@MediumTest
@RunWith(AndroidJUnit4.class)
public class MyActivityTest extends BaseRobot {
@Rule
public ActivityTestRule<MyActivity> mActivityRule = new ActivityTestRule<>(MyActivity.class);
@Test
public void testManifestListVisible() throws Exception {
allOf(withId(R.id.llContainer), isDisplayed());
}
@Test
public void testManifestBtnVisible() throws Exception {
isViewDisplayed(R.id.btManageManifest);
}
@Test
public void testManifestBtn() throws Exception {
clickButton(R.id.btManageManifest);
}
当第一个测试执行时,我收到此错误:
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id:com.xxx.xxx:id/myBtnId
发生此错误是因为正在为第一次测试启动启动器活动(我确定这是因为我可以在设备上看到它)。对于其他测试,MyActivity按预期启动。
注意:我使用的是此版本的libs
espressoVersion = '3.0.1'
hamcrestVersion = '1.3'
supportAnnotationsVersion = '23.1.0'
testRunnerVersion = '1.0.1'
testRulesVersion = '1.0.1'
提前谢谢!
答案 0 :(得分:0)
为遇到同样问题的人找到了解决方法。 在测试之前添加一个手动启动intent的方法。这是一个例子:
public class InstrumentationActivityTest {
@Rule
public ActivityTestRule<InstrumentationActivity> mActivityRule = new
ActivityTestRule<>(InstrumentationActivity.class);
@Before
public void startIntentManually() {
mActivityRule.launchActivity(new Intent());
}
//添加测试
不知道这是否是最佳解决方案,但它确实有效。