【问题标题】:Android instrumented test infinitely runningAndroid 检测测试无限运行
【发布时间】:2017-03-28 08:07:35
【问题描述】:

我已经编写了一些插桩测试,并且断言通过了 - 但是无论它们在什么配置中运行,运行永远不会终止/结束 - 我必须手动终止运行 - 这对于 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 分钟后它就挂了。它应该在

【问题讨论】:

  • 我已经在这篇文章中发布了一些新信息,我仍在积极寻求解决这个问题

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


【解决方案1】:

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

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

到设置,点击游戏运行的主要区域,现在测试通过了。

【讨论】:

    猜你喜欢
    • 2022-07-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多