【问题标题】:Accessing data from asset packs in Espresso tests在 Espresso 测试中访问资产包中的数据
【发布时间】:2023-01-04 20:35:02
【问题描述】:

我想在我之前录制的 Android Studio 中运行 Espresso 测试。该测试需要访问一个文件,该文件是资产包的一部分,但由于“FileNotFoundException”而失败。

资产包被定义为安装时交付,并且记录 Espresso 测试工作正常。只是运行测试失败。

我相信这是因为该文件不是主应用程序的资产,而是资产包中的资产。要从 Android Studio 运行应用程序,必须将默认交付从默认 apk 更改为“来自应用程序包的 apk”,如此处所述https://developer.android.com/guide/app-bundle/test。我猜想测试运行器使用默认的 apk 交付安装应用程序,这就是资产丢失的原因。当我启动从测试运行程序安装的应用程序时,我可以看到缺少资产包。在运行测试之前使用资产包手动安装应用程序无济于事,因为测试运行器会在没有资产包的情况下重新安装应用程序。

编辑:我确认这是错误的安装类型。当我像往常一样从 Android Studio 运行应用程序,然后从控制台 adb shell am instrument -w -m -e debug false -e class 'com.example.somethingsomething#homeActivityTest' com.example.somethingsomething/androidx.test.runner.AndroidJUnitRunner 手动运行测试时,测试运行完美。所以安装需要从应用程序包而不是普通的 apk 安装应用程序。

知道如何让 Espresso 测试运行器安装包含资产包的应用程序吗?

【问题讨论】:

  • 有更新吗?你设法解决了这个问题吗?

标签: android android-espresso android-assets android-assetpacks


【解决方案1】:

我希望这对你有帮助。 按照以下步骤开始在 UI (espresso) 测试中使用资产文件夹。

  1. 修改模块级别构建.gradle文件:将这些代码行添加到资源集部分,以便您的应用知道用于 UI 测试的资产将位于何处。

    test {
        resources {
            srcDirs 'src/test/assets'
        }
    }
    
  2. 创建一个名为的文件夹资产在你的 src/test 文件夹中。

  3. 要访问文件夹内容,请使用后续行提供的上下文(重要的是使用getTargetContext(),不是 获取上下文())

    InstrumentationRegistry.getInstrumentation().getTargetContext();

  4. 将文件添加到您的 test/assets 文件夹,并在您的测试中使用它们,例如使用此功能:

     public String getAssetString(Context context, String filename) {
         String string = null;
         try {
             AssetManager assets = context.getAssets();
             InputStream is = assets.open(filename);
             int size = is.available();
             byte[] buffer = new byte[size];
             is.read(buffer);
             is.close();
             string = new String(buffer, "UTF-8");
         } catch (IOException e) {
             e.printStackTrace();
         }
         return string;
     }
    

【讨论】:

    猜你喜欢
    • 2020-10-20
    • 2021-01-02
    • 2015-09-25
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2017-05-05
    相关资源
    最近更新 更多