我有一个本地集成测试,该测试使用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
读取。
最终您的测试将测试项目产生的JAR/WAR中包含的所有内容。这包括编译的课程和资源。因此,对我来说,src/main/resources
在测试类路径上是完全合理的。
而不是排除src/main/resources
中的特定文件,我建议您将hbase-site.xml
从src/main/resources
移动到src/non-test/resources
或类似。然后,您可以将此文件夹在罐子中包含
在这种特定情况下的解决方法(使用HBaseTestingUtility
(是为src/main/resources
中存在的每个Hadoop XML文件创建空白文件。就我而言,我将以下文件添加到src/test/resources
:
- core-site.xml
- hbase-site.xml
- hdfs-site.xml
每个包含:
<configuration>
</configuration>
空白文件优先于src/main/resources
中的文件,HBaseTestingUtility
按预期工作。