运行测试时从类路径中排除src / main / resources

时间:2018-03-28 14:52:56

标签: java gradle junit hbase

我有一个使用HBaseTestingUtility创建本地HBase测试环境的本地集成测试。使用默认配置启动它非常简单:

HBaseTestingUtility hbaseUtility = new HBaseTestingUtility();
hbaseUtility.startMiniCluster();

然后我有几个与HBase交互的JUnit测试。

但是,如果我的src/main/resources文件夹包含hbase-site.xml,那么HBase实例将从那里获取Kerberos配置,尝试连接到远程HBase实例,然后死掉。我不明白为什么会发生这种情况 - 我认为在运行测试时只有src/test/resources个文件可用?

如何在运行这些测试时从类路径中排除src/main/resources

如果有帮助,我的构建工具是Gradle,并且其中没有任何配置可以告诉测试从src/main/resources读取。

2 个答案:

答案 0 :(得分:2)

最终,您的测试将测试项目产生的jar / war中包含的所有内容。这包括已编译的类和资源。因此,src/main/resources位于测试类路径上对我来说非常有意义。

我建议您将src/main/resourceshbase-site.xml移至src/main/resources或类似文件,而不是从src/non-test/resources中排除特定文件。然后,您可以在jar中包含此文件夹,但将其从测试类路径中删除

答案 1 :(得分:0)

针对此特定情况(使用HBaseTestingUtility)的解决方法是为src/main/resources中存在的每个Hadoop XML文件创建空白文件。就我而言,我将以下文件添加到src/test/resources

  • 芯-site.xml中
  • HBase的-site.xml中
  • HDFS-site.xml中

每个包含:

<configuration>
</configuration>

空白文件优先于src/main/resources中的空白文件,HBaseTestingUtility按预期工作。