适用于多种屏幕尺寸/布局的Android Instrumentation Test

时间:2016-03-21 20:28:05

标签: android android-testing android-espresso

我有一些屏幕在大屏幕上分屏,但在小屏幕上是单屏幕,如下所述:http://developer.android.com/training/basics/fragments/fragment-ui.html

我正在尝试编写一个运行我的应用程序的所有功能的测试用例,并且我已经模拟了所有网络调用,等等。

我知道的唯一剩下的问题是,是否有适当的方法来测试多个布局。

现在,我需要使用我想测试的配置在各种AVD上手动运行测试用例,并且我有这种格式的调用:

if( uiDevice.getDisplaySizeDp().x < 600) {
    // we are using the standard layout, so the fragment was opened on top of the stack, instead of side-by-side
    // press Back to get back to the list of objects
    pressBack();
}

我正在使用AndroidJUnit4android.support.test.runner.AndroidJUnitRunner运行Espresso测试。

问题是:我是否可以与我的团队分享标准/文档化方法来处理不同的布局限定符:sw600dpw900dplandscape等。< / p>

或者有一种方法可以指定为匹配限定符的设备运行哪些测试用例?

根据drfrag01回复更新:

一旦跑步者在设备上启动,我认为我正在寻找能够自动选择运行哪些测试用例的东西。我最好的情况可能是我添加注释@ SW600或@Normal,然后当测试在设备上运行时,@ SW600被跳过一个小手机,而不是我设置所有套件。

如果没有自定义的测试运行器,看起来这可能是不可能的。

1 个答案:

答案 0 :(得分:2)

我使用以下内容 -

/**
 * Determine if the device is a tablet (i.e. it has a large screen).
 *
 * @param context The calling context.
 */

public static boolean isTablet(Context context) {
    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}


/**
 * Determine if the device is in landscape or portrait mode. Returns true for portrait, and false
 * for landscape.
 */
public static boolean isPortrait(Context context) {
    return context.getResources().getConfiguration().screenHeightDp > context.getResources().getConfiguration().screenWidthDp;
}

您可以过滤需要按

运行的测试用例
  1. Organizing them in Suites and running the suites.
  2. 例如

    ./ gradlew -Pandroid.testInstrumentationRunnerArguments.class = com.mycompany.foo.test.Suites.PortraitFriendlyTestSuite connectedAndroidTest --info

    1. Annotating them with for example "@TabletTest" or "@PortraitOnly" and filtering them in a test run.
    2. 例如

      ./ gradlew -Pandroid.testInstrumentationRunnerArguments.annotation = com.mycompany.foo.Annotations.PortraitOnly connectedAndroidTest --info