微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Firebase 测试实验室将文件写入 Android 设备?

如何解决在 Firebase 测试实验室将文件写入 Android 设备?

我正在使用 Flank/Firebase 测试实验室编写在 Android Pixel API28 上运行的 JUnit4 测试,并尝试将一些元数据写入测试设备的任何公共 /sdcard/* 文件夹并下载元数据以进行进一步处理。>

此时我已经尝试了以下代码的多种变体,但似乎都没有奏效:

        // val folder = "/storage/emulated/0/Download"
        // val folder = "/sdcard/Android/Download"
        val folder = getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS).absolutePath
        val fileName = "$folder/Result-$testCaseId.json"

        try {
            val myObj = File(fileName)
            if (myObj.createNewFile()) {
                Log.i("MetadataListener","File created: " + myObj.getName())
            } else {
                Log.i("MetadataListener","File already exists.")
            }
        } catch (e: IOException) {
            // println("An error occurred.")
            Log.e("MetadataListener","Error message" + e.message)
            e.printstacktrace()
        }

我还尝试在我的 AndroidManifest.xml 中启用写入权限,但这没有任何作用。我也不认为我应该需要这些权限,因为我正在尝试写入公共下载文件夹:

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
      tools:ignore="ScopedStorage" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

有人知道这里出了什么问题吗? 当我针对本地设备进行调试并逐步执行代码时,此代码确实可以正常运行。 :(

在这里非常感谢您的任何建议,谢谢!

解决方法

我在解决这个问题的过程中学到的东西:

  1. 默认情况下,Flank 提供所有权限,因此对于 Flank/Firebase 测试实验室配置,无需显式启用写入权限。这不是我的问题。

  2. 根本原因是这段代码实际上没有运行。事实证明,在我的 Gradle 插件代码中向测试运行程序注册侦听器时,Firebase 测试实验室不接受我的配置参数:

project.configure<LibraryExtension> {
  defaultConfig.testInstrumentationRunner = "com.mypackage.TestRunner"
  defaultConfig.testInstrumentationRunnerArgument("listener","com.mypackage.MetadataListener)
}

解决我的问题的变通方法和公认的答案是在运行时向我的测试运行器显式添加一个侦听器,而不是在构建时:

class TestRunner : AndroidJUnitRunner() {
    override fun onCreate(arguments: Bundle) {
        arguments.putString("listener",MetadataListener::class.java.name)
        super.onCreate(arguments)
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。