在robolectrictesting中使用资产

在我的robolectrictesting中,我试图读取一个文件。 由于这个文件只包含testing数据,所以我把它放在testing的资产中。

目录结构看起来像这样。
src/main/assets/prod_data_file
src/test/assets/test_data_file

但是,当我尝试通过getShadowApplication().getAssets().open(MY_FILE_PATH)读取文件时,它给了我FileNotFoundException

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

Solutions Collecting From Web of "在robolectrictesting中使用资产"

由于我的testing只是读取这些文件,并返回文件数据作为String我可以通过getClass().getClassLoader().getResourceAsStream(MY_FILE_PATH) ,然后读取文件。 不真的需要阅读使用getShadowApplication().getAssets().open(MY_FILE_PATH)

我只是将我的testing数据文件移动到src/test/resources ,它工作。 🙂

我能够这样做:

1)在testing文件夹中复制(或创build)AndroidManifest.xml

2)为这个特定的testing添加@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' ) } } } 

但我不知道,因为插件不创build任何构build变体,而只是任务。