运行测试时,将SRC/MAIM/RESOUDYER排除



我有一个本地集成测试,该测试使用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.xmlsrc/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按预期工作。

最新更新