在 ProviderTestCase2 中找不到 Android 资源

标签 android android-contentprovider android-resources android-testing

我目前正在为我的应用程序编写一个 csv 文件导入器,但我很难为其编写测试。我想要做的是导入一个示例 csv 文件并将结果与​​数据库进行比较。

public class CSVImportTest extends ProviderTestCase2<MyProvider> {

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        mContentResolver = getMockContentResolver();
        setContext(new IsolatedContext(mContentResolver, getContext()));
        mContext = getContext();
        mCSVImport = new CSVImportParker(mContext);

    }

    public void read() {
        try {
            // Fails here with "File not found."
            InputStream input = mContext.getResources()
                 .openRawResource(my.package.R.raw.file);

            ...
        } catch (Exception e) {
            e.printStackTrace();
            fail();
        }

        ...
    }

}

虽然在正确的位置可用,但从未找到测试文件。

最佳答案

问题是 raw 目录中的资源被压缩,除非它们具有 ogg 或 mp3 文件扩展名。请参阅此说明:

Proguard breaking audio file in assets or raw

来自 docs

This function only works for resources that are stored in the package as uncompressed data, which typically includes things like mp3 files and png images.

因此,解决此问题的最简单方法是将 mp3 或 ogg 文件扩展名添加到您的原始 Assets 中。它不干净也不漂亮,但它有效。

关于在 ProviderTestCase2 中找不到 Android 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763399/

相关文章:

Android 以编程方式进行蓝牙配对

java - android可扩展 ListView 从firebase检索数据

安卓和海拔数据

android 内容提供者给出未知 URL 内容 ://com

android - 哪个先出现,values-sw 还是 values-dpi?

android - 如何使用来自多个模块的多个dimens.xml 文件?

android - Nexus 7 新版本解决资源文件夹问题

android - Android 本地代码的回溯

android - 在 SQLiteOpenHelper.onDowngrade() 中删除数据库文件的良好模式

java - SMS Cursor 的列名?