测试后卸载应用程序后,会生成黄瓜报告,但会删除黄瓜报告

时间:2019-08-11 19:31:54

标签: android reporting bdd cucumber-jvm

我正在Android中运行黄瓜测试,并尝试将报告存储在外部目录中,该目录似乎是/storage/emulated/0/Android/data/<package-name>/files

在执行测试期间,我可以看到生成了报告。但是,卸载应用程序后,报告将被删除。我正在使用下面的Gradle任务来复制无效的报告。

gradle.taskGraph.afterTask { task, state ->
    if ((task == connectedAndroidTest) || (task == connectedCheck)) {
    enter code here    def reportDir = new File(project.buildDir, "cucumber-reports")
        if (!reportDir.exists()) {
            reportDir.mkdirs()
        }
        println 'Retrieving Cucumber test report to ' + project.buildDir
        def processBuilder = new ProcessBuilder(
                ['adb', 'pull', '/storage/emulated/0/Android/data/<package-name>/files/reports/', reportDir.getAbsolutePath()])
        processBuilder.start()
    }
}

在删除报告之前,谁能帮助我将报告复制到桌面上。

我尝试将报告存储在其他两个位置,例如/sdcard/mnt/sdcard/storage/emulated/0。我没有这些运气。我得到IOException。看来我没有写这些位置的权限。

1 个答案:

答案 0 :(得分:0)

因为这些数据是应用程序数据,并且在应用程序的卸载过程中将删除所有应用程序数据。您需要具有在本地存储上写入的权限。

private static final int PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 123;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) 
    {
        requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
    } 
    else 
    {
        // You have permissions
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) 
{
   if((requestCode == PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE) && (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)) 
    {
        // You have permissions
    }
}

并且您必须将权限请求添加到您的AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果有权限,您可以写内部存储器。

File file = new File(<SomePath>, <SomeName>);
try (FileOutputStream fos = new FileOutputStream(file)) 
{
    // Save data
} 
catch (IOException e) 
{
    // Error
}