【问题标题】:Loading assets in an Android test project在 Android 测试项目中加载资产
【发布时间】:2013-11-25 03:54:36
【问题描述】:

我在一个 Android 测试项目的 assets 目录中有一个名为 cards.csv 的文件。我尝试用

打开它
InputStream input = this.getContext().getAssets().open("cards.csv");

但得到

java.io.FileNotFoundException:cards.csv
在 android.content.res.AssetManager.openAsset(本机方法)
在 android.content.res.AssetManager.open(AssetManager.java:315)
在 android.content.res.AssetManager.open(AssetManager.java:289)
在 bbct.android.common.provider.test.BaseballCardSQLHelperTest.setUp(BaseballCardSQLHelperTest.java:56)
在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
在 android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)

有没有其他人在 Android 测试项目中遇到过类似的问题?我需要做什么来解决这个问题?

【问题讨论】:

    标签: java android testing assets


    【解决方案1】:

    对于 2021 年遇到此问题的其他任何人,请使用检测上下文而不是通常的应用程序上下文:

    private val context = InstrumentationRegistry.getInstrumentation().context
    

    然后使用该上下文获取资产或资源:

    context.assets.open("cards.csv").bufferedReader()
    

    【讨论】:

    • 感谢您的更新。我有一段时间没有做太多的 Android 开发,但这看起来是目前解决问题的正确方法。
    【解决方案2】:

    问题是我的测试用例扩展了AndroidTestCase而不是InstrumentationTestCase

    【讨论】:

      猜你喜欢
      • 2020-03-19
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2021-07-20
      • 2012-03-04
      • 2017-05-05
      相关资源
      最近更新 更多