Android 浓缩咖啡测试-使用不同规则重新运行

Android 浓缩咖啡测试-使用不同规则重新运行,android,android-espresso,Android,Android Espresso,我编写了如下测试: @RunWith(AndroidJUnit4.class) public class MainActivityEspressoTest { private static final ArrayList<String> LANGUAGES = new ArrayList<String>() { { add("de"); add("en"); add("

我编写了如下测试:

@RunWith(AndroidJUnit4.class)
public class MainActivityEspressoTest
{
    private static final ArrayList<String> LANGUAGES = new ArrayList<String>()
    {
        {
            add("de");
            add("en");
            add("es");
        }
    };

    @ClassRule
    public static final LanguageRule localeTestRule = new LanguageRule(new Locale(LANGUAGES.get(0)));
    @Rule
    public final PermissionRule permissionsRule = new PermissionRule(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE});

    @Rule
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class);

    @Test
    public void makeScreenshot()
    {
        TestUtil.takeScreenshot(mActivityRule.getActivity().getResources().getConfiguration().locale.getCountry() + "screenshot", 1, mActivityRule.getActivity());
    }
}
@RunWith(AndroidJUnit4.class)
公共课维护活动浓缩咖啡
{
私有静态最终ArrayList语言=新ArrayList()
{
{
添加(“de”);
添加(“en”);
添加(“es”);
}
};
@阶级规则
publicstaticfinallanguagerulelocaletestrule=newlanguagerule(newlocale(LANGUAGES.get(0));
@统治
public final PermissionRule permissionsRule=new PermissionRule(新字符串[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
@统治
public ActivityTestRule mActivityRule=新的ActivityTestRule(MainActivity.class);
@试验
公共void生成屏幕截图()
{
TestUtil.takeScreenshot(mActivityRule.getActivity().getResources().getConfiguration().locale.getCountry()+“屏幕截图”,1,mActivityRule.getActivity());
}
}

我想用
语言中定义的所有语言运行这个测试,这可能吗?我不想为此编写n个不同的浓缩咖啡测试…

我尝试过这样的方法来创建本地化的屏幕截图。您可以在上面看到,无论我尝试什么,第二次运行总是会崩溃,
Test无法运行到完成。原因:“由于“进程崩溃”,检测运行失败。”
'。。。即使在复制和粘贴代码时,您也可能遗漏了一些内容。项目本身将很好地构建和运行,正如您在这里看到的:似乎这是我的静态权限规则,它只工作一次。。。我在你的代码中没有看到任何在棉花糖和更高版本上使用运行时权限的东西。。。对我来说,仅仅在舱单上声明是不够的。你的目标是API 23,这对你来说也不够。为什么这对你有用?我在API22模拟器上运行了测试。对于手动测试,您可以在设置中授予权限,这是一项艰巨的工作,或者您可以研究编写自定义gradle任务,在设备上安装应用程序后授予权限,例如,请参见此处: