![](/img/trans.png)
[英]Are files in src/test/resources on classpath while application (src/main) is running?
[英]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.xml
從src/main/resources
移到src/non-test/resources
或類似文件中,而不是從src/main/resources
排除特定文件。 然后,您可以將此文件夾包含在jar中,但將其保留在測試類路徑之外
針對這種特定情況的一種解決方法(使用HBaseTestingUtility
)是為src/main/resources
中存在的每個Hadoop XML文件創建空白文件。 就我而言,我將以下文件添加到src/test/resources
:
每個包含:
<configuration>
</configuration>
空白文件優先於src/main/resources
,並且HBaseTestingUtility
可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.