【问题标题】:Load File/Asset in Robolectric Test which was created at Runtime在运行时创建的 Robolectric 测试中加载文件/资产
【发布时间】:2018-02-12 18:03:36
【问题描述】:

我的问题如下:我有一个 Robolectric 测试用例。测试用例正在测试启动中创建文件。让我将此文件称为 Properties.txt。

测试用例本身将需要这个 Properties.txt 文件。所以我打电话:

AssetManager am = context.getAssets();
am.open(fileName);

第二行将导致 FileNotFoundException。如果我在这个特定位置进行调试,我可以看到文件已经在文件系统中创建,但 Robolectric 无法读取该文件。

到目前为止一切顺利,我认为这在某种程度上是合乎逻辑的。我假设 Robolectric 只是加载文件系统的反射,因此它不会看到运行时创建的文件/资产。

是否有可能以某种方式触发重新加载或输入 Robolectric 应始终假定存在文件的绝对路径?

【问题讨论】:

    标签: android robolectric


    【解决方案1】:

    这个资源是在 assets 文件夹中创建的吗?

    否则,您需要通过 FileInputStream 传递完整路径名才能读取。

    【讨论】:

    • 它是在 build/intermediates/assets/ 中创建的。
    • 它是在测试的资产中预先创建的还是在运行时创建的? AndroidStudio 文件路径与 Androids 不同
    • 如上所述,文件是在运行时创建的。在测试类的 Setup 方法中,我创建了文件并希望在测试方法中使用它。
    • 所以你需要通过完整文件系统路径来获取它
    • 相反,接收一个 InputStream,因此您可以从 File 或 Assets 打开
    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2019-07-09
    • 2020-03-19
    • 1970-01-01
    • 2013-06-01
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多