黄瓜报告正在生成,但在测试后卸载应用程序时被删除



我正在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。似乎我没有写入这些位置的权限。

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

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
}

最新更新