如果测试取决于设备,我该如何为Android编写自动测试?

时间:2016-10-17 12:47:30

标签: android unit-testing junit tdd

当测试结果取决于目标设备时,编写测试的最佳方法是什么?

例如,假设我有一个Android应用程序,其唯一功能是以像素为单位显示显示的高度。如果每种不同类型的设备的结果都会发生变化,我该怎么测试?

现在,我的想法是用三种或四种不同的配置来测试程序。由于我知道这些测试的输出应该是什么,因此我需要将预期值与每个设备的实际值进行比较。

然而,这种测试的正确结构是什么?我是否需要为每个设备创建一个测试类?如何仅针对某些测试配置运行某些测试? (例如,如果测试是在Nexus上执行的,则执行测试A,但如果测试是在Samsung do test B上执行的。)

1 个答案:

答案 0 :(得分:0)

关于第一个问题,如果您的应用程序是显示屏幕的高度,请使用不同的方法获取它并比较结果。您可以使用adb shell wm size或获取设备的屏幕截图,然后获取图像大小。

对于第二个问题,如果您创建仅适用于设备的测试,则可以使用JUnit4 Assume,这是一组有用的方法,可用于说明测试有意义的条件。< / p>

错误的假设并不意味着代码被破坏,但是测试没有提供有用的信息,那么你可以在测试开始时使用它

@Test
public final void testSomething() throws IOException {
    assumeThat(Build.MANUFACTURER, is(equalTo("samsung")));
    // your test here
    ...
}