在机器人电气测试中使用资产



在我的机器人电气测试中,我试图读取一个文件。因为这个文件只包含测试数据,所以我把它放在测试的资产中。

目录结构如下:
src/main/assets/prod_data_file
src/test/assets/test_data_file

然而,当我试图通过getShadowApplication().getAssets().open(MY_FILE_PATH)读取文件时,它给了我FileNotFoundException

有人知道如何解决这个问题吗?

由于我的测试只是读取这些文件并返回文件数据作为String,我能够通过getClass().getClassLoader().getResourceAsStream(MY_FILE_PATH)做到这一点,然后读取文件。使用getShadowApplication().getAssets().open(MY_FILE_PATH)其实不需要读。

我只是把我的测试数据文件移动到src/test/resources,它工作了。:)

我可以这样做:

1)复制(或创建)AndroidManifest.xml到test文件夹

2)为这个特定的测试添加@Config(emulateSdk = 18, manifest = "src/test/AndroidManifest.xml")

我可以读取文件。所以这意味着你可以玩AndroidManifest类和自定义跑者(更多的灵感在这里https://groups.google.com/forum/#!topic/robolectric/YvbdqRFcdnA)

我认为它也可以玩build.gradle:

android {
  sourceSets {
    androidTest.setRoot( 'src/test' )
    androidTest {
      assets.srcDir file( 'src/test/assets' )
    }
  }
}

但我不确定,因为插件不创建任何构建变体,但只是任务。

在Android Studio中,创建test assets文件夹(右键单击test目录->新→目录→从列表中选择资产)。将您的文件添加到刚才创建的测试资产文件夹中。在您的robolelectric测试中,您可以像这样读取文件:

val context = ApplicationProvider.getApplicationContext<Context>()
context.resources.assets.open(SOME_FILENAME)
    .bufferedReader()

相关内容

  • 没有找到相关文章

最新更新