带有Java库模块的Android Studio无法加载测试资源

nib*_*uen 10 gradle android-studio

我有一个带有Java库内部模块的Android Studio项目,该模块具有测试资源的测试.然而,当我运行测试时,我无法检索工件.这似乎在纯Java gradle项目中工作得很好(至少在eclipse中).

意思是对于java插件:

src/main/java
src/main/test
src/test/java
src/test/resources
Run Code Online (Sandbox Code Playgroud)

在资源目录下,我有一个crt文件,我想在我的junit测试中加载.当我使用任何命令时,它会为资源返回null.但我已经确认资源在build文件夹中.

我试过的一些事情:

getClass().getClassLoader().getResourceAsStream("cert_format_der.crt").read(); // NPE
getClass().getClassLoader().getResourceAsStream("/cert_format_der.crt").read(); // NPE
getClass().getClassLoader().getSystemResourceAsStream("/cert_format_der.crt").read(); // NPE
Run Code Online (Sandbox Code Playgroud)

谢谢

nib*_*uen 18

事实证明这似乎是Intellij的一个错误,以及Gradle如何正确设置测试源集的资源目录.

将其添加到模块的build.gradle中修复它:

sourceSets {
   test {
      output.resourcesDir = output.classesDir
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 我希望我能不止一次地投票. (2认同)

Tom*_*665 5

而不是将资源分散到类输出目录 - 正如nibbuen所建议的那样 - 也可以不触及输出目录并将其显式添加为依赖项.

dependencies {
  runtime files(sourceSets.test.output.resourcesDir)
}
Run Code Online (Sandbox Code Playgroud)