簡體   English   中英

運行測試時,從類路徑中排除src / main / resources

[英]Exclude src/main/resources from classpath when running tests

我有一個本地集成測試,該測試使用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位於測試類路徑上是非常有意義的。

我建議您將hbase-site.xmlsrc/main/resources移到src/non-test/resources或類似文件中,而不是從src/main/resources排除特定文件。 然后,您可以將此文件夾包含在jar中,但將其保留在測試類路徑之外

針對這種特定情況的一種解決方法(使用HBaseTestingUtility )是為src/main/resources中存在的每個Hadoop XML文件創建空白文件。 就我而言,我將以下文件添加到src/test/resources

  • 核心的site.xml
  • HBase的-site.xml中
  • HDFS-site.xml中

每個包含:

<configuration>
</configuration>

空白文件優先於src/main/resources ,並且HBaseTestingUtility可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM