Android Studio Unit Test中的Assets文件夹

Nut*_*mic 18 java android unit-testing android-resources

我有一个Gradle项目,具有以下结构:

project/
    src/
        androidTest/
            java/
        main/
            java/
            res/
            AndroidManifest.xml
    build.gradle
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个使用资源("原始"或"资产")的单元测试.

我把我的资源放入project/androidTest/assets/test_file并使用getContext().getResources().getAssets().open("test_file");(在一个AndroidTestCase)中访问它.

但是,这给了我一个FileNotFoundException.我怎样才能解决这个问题?

Yai*_*lka 35

看起来您正在尝试创建一个检测单元测试,因为您想在androidTest文件夹中创建它.

您可以在测试中使用这两行中的一行来获取上下文:

  • Context ctx = InstrumentationRegistry.getTargetContext(); 这个将为您提供应用程序的上下文.例如,您可以使用它来获取src/main/assets中的资产.

  • Context ctx = InstrumentationRegistry.getContext(); 这个将给你测试应用程序的上下文.您可以使用它来获取src/androidTest/assets中的资产

如果您想了解有关单元测试中资产的更多信息,可以阅读这篇文章.在这个github文件中你有一个例子.


lig*_*igi 5

我认为您使用了错误的上下文(应用程序上下文而不是检测上下文)使用:

getInstrumentation().getContext();
Run Code Online (Sandbox Code Playgroud)

或者在这里看到我确切地做你想做的事情:https : //github.com/ligi/gobandroid/blob/master/android/src/androidTest/java/org/ligi/gobandroidhd/base/AssetAwareInstrumentationTestCase.java