Android仪表测试无限运行

时间:2017-03-28 08:07:35

标签: android unit-testing junit android-testing android-instrumentation

我已经编写了一些检测测试,并且断言正在传递 - 但无论它们运行的​​是什么配置,运行永远不会终止/结束 - 我必须手动终止运行 - 这不是最佳的CI设置。

我尝试在以下运行配置中运行以下代码:

  • 在测试类中运行所有测试 - 在此实例中,运行第一个
  • 后,运行不会进入第二个测试
  • 在测试包中运行所有测试 - 在这种情况下,运行第一个测试后,运行不会进入第二个测试,但其他类中的所有其他测试测试都会成功。
  • 分别在测试类中运行两个测试

即使我拿出我的测试代码并进行了非常简单的测试(如下所述),代码执行也无法完成。

public class TestClass {

    private MainActivity mainActivity;
    private MyScreen myScreenInstance;

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

    @Before
    public void setUp() throws FileNotFoundException {
        mainActivity = (MainActivity) mActivityRule.getActivity();
    }

    @Test
    public void test_1() throws FileNotFoundException {
        assertEquals(1,2);
    }

    @Test
    public void test_2() throws FileNotFoundException {
        assertEquals(2,2);
    }


}

对于上下文我试图测试我在一个由讲师编写的简单游戏引擎上编写的类中的触摸行为,我编写的测试代码和断言全部工作 - 但问题是运行没有完成。

我是否必须进行某种“拆解”操作?破坏ActivityTestRule的方法?我该怎么做才能确保此运行正确完成?

有趣的是,这些非常简单的断言在Nexus 7仿真器上成功运行在API 25上,但是当在运行API 23的Nexus 5仿真器中运行时,测试无法完成,如上所述。

更多信息:

  • 使用调试器慢慢地运行测试,逐步执行 - 它们都应该通过
  • 将Thread.sleep(1000)添加到@After(tearDown)方法,所描述的问题停止发生。但是,这并不能解决这个问题,因为我们的运行在firebase测试实验室(CI)中仍然超时

下面是我开始跑步的照片,然后5分钟后它就挂了。它应该已经完成​​了2次测试。 2秒。

enter image description here

1 个答案:

答案 0 :(得分:0)

我现在已经解决了这个问题,通常开发人员会添加一个onView调用,但是由于我正在使用的框架的性质,我没有这样做。我添加了

onView(withId(R.id.activity_fragment_id)).perform(click());

到设置,只需点击游戏在其中运行的主区域,现在测试通过。