dbunit之org.dbunit.dataset.DataSetException: java.net.MalformedURLException解決方案

來源:互聯網
上載者:User

標籤:

一、問題定位

   在使用dbunit做DAO的單元測試時,拋出了一個org.dbunit.dataset.DataSetException: java.net.MalformedURLException異常,如,


可以看到問題出現在我寫的TestDbUnit的49行,再看原始碼


第49行是這一句 IDataset ds = new FlatXmlDataSet(file)。但實際出現問題的是file對象中的TestDbUnit.class.getClassLoader().getResourceAsStream("t_user.xml"),


我將這一句列印出來發現結果為:


結果為null,說明沒有讀到t_user.xml檔案,這也是產生org.dbunit.dataset.DataSetException: java.net.MalformedURLException的原因。


二、解決方案

    問題的根源是t_use.xml檔案沒有被讀取,為什麼會產生這種情況能,首先看我t_user.xml檔案的位置,

t_use.xml檔案是在dbunit_xml包下的,而解析它的TestDbUnit類是在zttc.itat.service包下的。


方法一:

    現在我們將t_use.xml檔案移動到test根目錄下,在運行發現問題解決:

列印出的TestDbUnit.class.getClassLoader().getResourceAsStream("t_user.xml")也不再為null。


方法二:

    將TestDbUnit.class.getClassLoader().getResourceAsStream("t_user.xml")改為TestDbUnit.class.getResourceAsStream("t_user.xml")然後將t_user.xml移動到與TestDbUnit同一個包下也同樣可以解決問題:



方法三:

    如果我就是想把t_user.xml放到dbunit_xml包下讀取怎麼辦,可以用這個語句TestDbUnit.class.getResourceAsStream("/dbunit_xml/t_user.xml"),運行也沒有錯誤



三、 Class.getResourceAsStream(String path) 與Class.getClassLoader.getResourceAsStream(String path)

    1. Class.getResourceAsStream(String path) : path 不以’/‘開頭時預設是從此類所在的包下取資源,以’/‘開頭則是從ClassPath根下擷取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader擷取資源。

    2. Class.getClassLoader.getResourceAsStream(String path) :預設則是從ClassPath根下擷取,path不能以’/‘開頭,最終是由ClassLoader擷取資源。


dbunit之org.dbunit.dataset.DataSetException: java.net.MalformedURLException解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.