我有一個程序依靠XML文件從中檢索數據。測試時,我希望它使用不同的XML文件。動態更改資源文件以進行測試
我想做到這一點使用ClassLoader
,其中代碼可能類似於沿此線的東西:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
使用裝載機,我會加載測試XML資源文件。因此,所有使用默認XML文件的操作都將使用測試XML文件。
我該怎麼做呢?
我有一個程序依靠XML文件從中檢索數據。測試時,我希望它使用不同的XML文件。動態更改資源文件以進行測試
我想做到這一點使用ClassLoader
,其中代碼可能類似於沿此線的東西:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
使用裝載機,我會加載測試XML資源文件。因此,所有使用默認XML文件的操作都將使用測試XML文件。
我該怎麼做呢?
你有不同的選擇,你可以創建不同的jar文件,例如testing.jar和production.jar並將相應的文件放入這些文件中。獲取一個InputStream與
InputStream is = loader.getResourceAsStream(resourceName);
或者你創建一個輔助類,這是第一次搜索一個文件,然後試圖從ClassLoader的InputStream的。如果文件(使用正確路徑)在您的開發環境中可用,那麼您將獲得測試XML,但在生產環境中,文件不應該可用,因此您可以從資源包(jar)中獲取生產XML。
如果您使用的是Maven,則可以使用不同的資源(src/main/resources和src/test/resources)。
如果您的XML被用於配置某個配置對象,並且您的測試的目的是使用不同的配置測試應用程序 - 我建議更改該方法: 您最好嘲笑配置對象並使用模擬在測試中。
我相信如果你使用MockIt,你甚至不需要改變你的應用程序就可以實現。