dbunit之org.dbunit.dataset.DataSetException: java.net.MalformedURLException解决方法
来源:互联网 发布:d3.v4.min.js 编辑:程序博客网 时间:2024/05/29 18:17
一、问题定位
在使用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解决方法
- 遭遇org.dbunit.dataset.NoSuchTableException
- mysql+dbunit 抛出NoSuchColumnException、DataSetException
- [解决方法]org.dbunit.dataset.NoSuchTableException: Did not find table 'tab1' in schema 'null'
- DBUnit
- DBunit
- DBunit
- DbUnit
- DBunit
- Dbunit
- DbUnit控制台警告解决方法
- org.dbunit.database.AmbiguousTableNameException异常
- org.dbunit.dataset.NoSuchColumnException: t_role.ROLE_TYPE - (Non-uppercase input column: role_type
- JAVA 数据库测试框架DBUnit之Hibernate篇
- DBUnit的使用之數據庫數據導出
- 玩转单元测试之DBUnit
- 玩转单元测试之DBUnit
- org.dbunit.database.AmbiguousTableNameException 终极解决方案
- 【leetcode】64. Minimum Path Sum
- Laxcus大数据管理系统2.0(8)- 第六章 网络通信
- Linux 中的五种 IO 模型
- JVM内存管理及垃圾回收
- Oracle审计功能
- dbunit之org.dbunit.dataset.DataSetException: java.net.MalformedURLException解决方法
- Android Studio下提示Couldn't load BaiduMapSDK_v3_1_0
- UBA项目描述
- SpringMVC -- 拦截器技术1 (6)
- 【感悟】梳理心灵上的尘埃,继续向前
- UVA - 457 Linear Cellular Automata
- 同步、异步、阻塞与非阻塞
- Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件
- 把word excel ppt 导入到右键快捷菜单中