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

时间:2014-07-21 16:52:08

标签: gradle android-studio

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

含义对于java插件:

src/main/java
src/main/test
src/test/java
src/test/resources

在资源目录下,我有一个我想在junit测试中加载的crt文件。当我使用任何命令时,它会为资源返回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

由于

2 个答案:

答案 0 :(得分:18)

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

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

sourceSets {
   test {
      output.resourcesDir = output.classesDir
   }
}

答案 1 :(得分:5)

不是将资源分散到类输出目录 - 如 nibbuen 所示 - 也可以不触及输出目录并将其显式添加为依赖项。

<title>TODO supply a title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="//cdn.mcfcloud.com/jquery-1.11.2/external/jquery/jquery.js"></script>
<link href="//datatables.net/download/build/nightly/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<script src="//datatables.net/download/build/nightly/jquery.dataTables.js"></script>
<script src="//cdn.rawgit.com/ashl1/datatables-rowsgroup/v1.0.0/dataTables.rowsGroup.js"></script>

<div class="container">
  <table id="example" class="display" width="100%">
  </table>
</div>