今天要寫一個單元測試,這個單元測試類要去讀和它同目錄的一個XML檔案。它的位置如下:
ConfigFactoryImplTest要去讀取boss-connector-service.xml。

那麼如果得到這個檔案呢?先看下面的一個對路徑的測試代碼
import java.io.File;
public class PathTest {
public static void main(String[] args) throws Exception {
System.out.println(
Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(PathTest.class.getClassLoader().getResource(""));
System.out.println(ClassLoader.getSystemResource(""));
System.out.println(PathTest.class.getResource(""));
System.out.println(PathTest.class.getResource("/"));
System.out.println(new File("").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
列印各種路徑結果如下:
file:/E:/wxxr_projects2/wxxr-applications/wxxr-boss-connector/target/test-classes/
file:/E:/wxxr_projects2/wxxr-applications/wxxr-boss-connector/target/test-classes/com/wxxr/boss/config/
E:\wxxr_projects2\wxxr-applications\wxxr-boss-connector
發現PathTest.class.getResource("")得到了絕對路徑,嗯,就它了。于是将ConfigFactoryImplTest類裡的代碼書寫如下(這裡是用DOM來讀XML):
private static Element getRootElement() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(ConfigFactoryImplTest.class.getResource("") + "boss-connector-service.xml");
return doc.getDocumentElement();
}
後記:
得到資源檔案的路徑,在不同的環境(如:Eclipse RCP、Tomcat、Weblogic、簡單的Java Application),方法都是略有不同的。具體的環境要具體分析。