听说maven很神奇-实战-03

实战maven+hibernate+junit4
第一步创建核心层user-core的过程
一、创建model层 User

图片
二、引入hibernate
(这里体现maven的好处了)
2.1直接到中央工厂找到想要的hibernate包的坐标,写入pom.xml文件

图片
2.2配置好hibernate.cfg.xml文件
图片
三、接着把数据库驱动,junit4的资源坐标引入  
图片

图片

图片
四、
4.1为了学习日志的管理,使用log4j
图片
4.2log.properties文件的配置
图片
五、创建IUserDao和UserDao,便于测试,创建方法add(),loadByUsername()  
图片
图片
这里使用HibernateUtil管理sessionFactory
图片  
核心模块的项目目录如下:
图片
六、写测试模块,测试dao是否有错误
创建TestUserDao
6.1测试时,需要隔离数据库做访问,使用dbunit包
图片
(补: Dbunit在测试的时候用来隔离数据库的访问

1、  导入jar包 dbunit.jar

2、 导入Slf4.jar  一定要用1.6以上的jar包

3、 创建dbunit的测试数据xml

4、 创建dbunit的connection

Dbunit的Connection是用来对数据文件进行操作的

这个connecton必须依赖现在项目所使用的connection

5、 创建IDataSet,通过DATASet来获取测试数据中的数据

6、 初始化数据并且完成测试

7、 备份和还原数据库

)
创建junit 的两个类AbstractDbUtilTestCase  EntitiesHelper
(dbunit可以自动导入配置文件中的数据,并且可以把数据库中的表生成相应的xml配置文件。)
①使用dbunit首先创建一个基本的配置文件在classpath中,以下是t_user.xml文件内容

图片
②创建IDatabaseConnection、IDataSet并且完成测试
    IDatabaseConnection是dbunit中重要的部分,等于jdbc的Connection
     通过IDatabaseConnection可以创建dbunit所需要的记录集等对象,IDatabaseConnection的创建需要基于JDBC的Connection,以下是创建IDatabaseConnection的代码,Dbutil中可以通过原始的jdbc的方式创建Connection也可以通过Spring中配置的SessionFactory来获取Connection(但是,现在是用hibernate,有自己的connection,通过sessionFactory获得
做测试时的connection等到dbconnection启动之后就关闭了,我们直接用jdbc链接就行,不要和hibernate挂钩,到时候是和spring结合在一起的,测试时,依然用原始的jdbc连接的方式)
图片  
 可以通过该对象创建相应的IDataSet对象,以上xml中的格式是通过FlatXmlDataSet对象进行解析,所以通过该对象可以进行记录集的初始化等操作。

③数据的还原问题,可能在进行数据库测试时希望测试数据不会影响到原有数据,可以考虑在进行测试之前把数据库先进行备份,之后在测试之后进行还原。为了让测试可以复用,可以考虑写个公共的测试类来完成dbunit的初始化操作。
 
图片
图片

图片

6.2使用时,将测试类继承于这个类就拥有了相应的方法
(补:
  1. @Test:  测试方法
    1. (expected=XXException.class)
    2. (timeout=xxx)
  2. @Ignore:  被忽略的测试方法
  3. @Before:  每一个测试方法之前运行
  4. @After:  每一个测试方法之后运行
  5. @BeforeClass:  所有测试开始之前运行
  6. @AfterClass:  所有测试结束之后运行
图片

图片
6.3其中EntitiesHelper类
图片
七、运行
在idea的Edit configuration配置
图片  
运行出现的问题:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Running edu.jiasi.user.dao.TestUserDao
解决:
  问题的原因是无法找到org.slf4j.impl.StaticLoggerBinder
网上解答:This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.
        You can download SLF4J bindings from the project download page.

下载slf4j-nop.jar,添加到路径中,就解决问题了
org.hibernate.HibernateException: The database returned no natively generated identity value
原因:
在User类中在设置的是自动增长的id
图片
而数据库中id字段不是
修改数据库中的t_user表
图片
③idea乱码问题
运行项目时,控制台出现是乱码,发现项目其他的文件都是utf-8,log.propertities文件是GBK编码,刚接触idea遇到乱码问题确实有点棘手,在网上的说法是说在右下角的编码改,试了无效,
图片
最后在settings里将改GB18030(改为utf-8不可以,暂时不知道为什么)

图片
图片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值