2

我正在进入 Android UI 测试,我学会了两种启动活动的方法:ActivityScenario在每个测试中,ActivityScenarioRule一次,用@Rule.

一开始我用过ActivityScenario,成功了。每个测试大约需要 2-4秒才能完成:

@RunWith(AndroidJUnit4ClassRunner.class)
public class MyActivityTest {

    @Test
    public void test1() {
        ActivityScenario<MyActivity> scenario = ActivityScenario.launch(MyActivity.class);
        //do testing...
    }

    @Test
    public void test2() {
        ActivityScenario<MyActivity> scenario = ActivityScenario.launch(MyActivity.class);
        //do testing...
    }

    //more tests...
}

然后我决定切换到ActivityScenarioRule,因为我编写了相当多的测试,并且根据规则,我不需要ActivityScenario为每个测试创建一个:

@RunWith(AndroidJUnit4ClassRunner.class)
public class MyActivityTest {

   @Rule //launch this activity before each test
   public ActivityScenarioRule<MyActivity> rule = new ActivityScenarioRule<>(MyActivity.class);

    @Test
    public void test1() {
        //do testing...
    }

    @Test
    public void test2() {
        //do testing...
    }

    //more tests...
}

如果我使用这条规则运行测试,每个测试大约需要40-50 秒,并且大部分时间都花在了这个屏幕上:

在此处输入图像描述

测试在模拟器上运行。我不知道这个屏幕是什么,为什么在使用时会占用这么多时间ActivityScenarioRule。在每次测试中使用ActivityScenario时,此屏幕不会显示并且测试完成速度很快。请帮忙,我错过了什么?

4

0 回答 0