Android 无限测试 运行
Android instrumented test infinitely running
我已经编写了一些仪器测试,并且断言正在通过 - 但是无论它们 运行 在什么配置中, 运行 永远不会 terminates/ends - 我必须手动终止 运行 - 这对于 CI 设置来说不是最佳选择。
我已尝试 运行在以下 运行 配置中使用以下代码:
- 运行 测试 class 中的所有测试 - 在这种情况下,运行 在第一个 运行 之后不会进入第二个测试
- 运行 测试包中的所有测试 - 在这种情况下,运行 在第一个 运行 之后不会进入第二个测试,但其他 运行 中的所有其他仪器测试=54=]成功了。
- 运行分别在测试中测试class
即使我取出我的测试代码并进行非常简单的测试(正如我在下面所做的那样),代码执行也不会完成。
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);
}
}
对于上下文,我正在尝试测试 class 中的触摸行为,我在一个由讲师编写的简单游戏引擎之上编写,我编写的测试代码和断言都有效 -但问题是 运行 没有完成。
我必须要有某种 'teardown' 方法来销毁 ActivityTestRule
吗?我该怎么做才能确保此 运行 正确完成?
有趣的是,这些非常简单的断言在 Nexus 7 模拟器 API 25 上成功 运行,但是当 运行 在 Nexus 5 模拟器 运行ning API 23 测试未按上述说明完成。
更多信息:
- 运行使用调试器缓慢地完成测试,逐步执行步骤 - 它们都按预期通过了
- 将 Thread.sleep(1000) 添加到 @After (teardown) 方法中,描述的问题不再发生。然而,这并不能解决这个问题,因为我们的 运行 仍然在 firebase 测试实验室 (CI)
中超时
下面是一张 运行 我开始的图片,然后 5 分钟后就挂了。它应该在 < 2 秒内完成 2 个测试。
我现在已经解决了这个问题,通常开发人员会添加一个 onView
调用,但是由于我工作的框架的性质,我没有这样做。我已添加
onView(withId(R.id.activity_fragment_id)).perform(click());
到设置,只需单击游戏运行的主要区域,现在测试通过。
我已经编写了一些仪器测试,并且断言正在通过 - 但是无论它们 运行 在什么配置中, 运行 永远不会 terminates/ends - 我必须手动终止 运行 - 这对于 CI 设置来说不是最佳选择。
我已尝试 运行在以下 运行 配置中使用以下代码:
- 运行 测试 class 中的所有测试 - 在这种情况下,运行 在第一个 运行 之后不会进入第二个测试
- 运行 测试包中的所有测试 - 在这种情况下,运行 在第一个 运行 之后不会进入第二个测试,但其他 运行 中的所有其他仪器测试=54=]成功了。
- 运行分别在测试中测试class
即使我取出我的测试代码并进行非常简单的测试(正如我在下面所做的那样),代码执行也不会完成。
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);
}
}
对于上下文,我正在尝试测试 class 中的触摸行为,我在一个由讲师编写的简单游戏引擎之上编写,我编写的测试代码和断言都有效 -但问题是 运行 没有完成。
我必须要有某种 'teardown' 方法来销毁 ActivityTestRule
吗?我该怎么做才能确保此 运行 正确完成?
有趣的是,这些非常简单的断言在 Nexus 7 模拟器 API 25 上成功 运行,但是当 运行 在 Nexus 5 模拟器 运行ning API 23 测试未按上述说明完成。
更多信息:
- 运行使用调试器缓慢地完成测试,逐步执行步骤 - 它们都按预期通过了
- 将 Thread.sleep(1000) 添加到 @After (teardown) 方法中,描述的问题不再发生。然而,这并不能解决这个问题,因为我们的 运行 仍然在 firebase 测试实验室 (CI) 中超时
下面是一张 运行 我开始的图片,然后 5 分钟后就挂了。它应该在 < 2 秒内完成 2 个测试。
我现在已经解决了这个问题,通常开发人员会添加一个 onView
调用,但是由于我工作的框架的性质,我没有这样做。我已添加
onView(withId(R.id.activity_fragment_id)).perform(click());
到设置,只需单击游戏运行的主要区域,现在测试通过。