在Espresso测试中启动了错误的活动

时间:2017-09-19 11:18:02

标签: android android-activity mobile android-espresso

尝试为非启动器活动执行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'

提前谢谢!

1 个答案:

答案 0 :(得分:0)

为遇到同样问题的人找到了解决方法。 在测试之前添加一个手动启动intent的方法。这是一个例子:

public class InstrumentationActivityTest {

@Rule
public ActivityTestRule<InstrumentationActivity> mActivityRule = new 
 ActivityTestRule<>(InstrumentationActivity.class);

 @Before
 public void startIntentManually() {
    mActivityRule.launchActivity(new Intent());
}

//添加测试

不知道这是否是最佳解决方案,但它确实有效。