我有一些屏幕在大屏幕上分屏,但在小屏幕上是单屏幕,如下所述: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();
}
我正在使用AndroidJUnit4
和android.support.test.runner.AndroidJUnitRunner
运行Espresso测试。
问题是:我是否可以与我的团队分享标准/文档化方法来处理不同的布局限定符:sw600dp
,w900dp
,landscape
等。< / p>
或者有一种方法可以指定为匹配限定符的设备运行哪些测试用例?
根据drfrag01回复更新:
一旦跑步者在设备上启动,我认为我正在寻找能够自动选择运行哪些测试用例的东西。我最好的情况可能是我添加注释@ SW600或@Normal,然后当测试在设备上运行时,@ SW600被跳过一个小手机,而不是我设置所有套件。
如果没有自定义的测试运行器,看起来这可能是不可能的。
答案 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;
}
您可以过滤需要按
运行的测试用例例如
./ gradlew -Pandroid.testInstrumentationRunnerArguments.class = com.mycompany.foo.test.Suites.PortraitFriendlyTestSuite connectedAndroidTest --info
例如
./ gradlew -Pandroid.testInstrumentationRunnerArguments.annotation = com.mycompany.foo.Annotations.PortraitOnly connectedAndroidTest --info