快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

亚游app集团下载:【J2EE架构师】25、SSH使用junit+dbunit进行单元测试



一、媒介

在二十三天中我们先容了应用maven来下载工程的依附库文件,用ant来进行war包的建立。本日我们在这个根基上将应用junit+dbunit来进行带有单元测试申报的框架的架构。

目标:

每次打包之前自动进行单元测试并天生单元测试申报

天生要布署的打包文件即war包

单元测试的代码不能够被打在正式的要布署的war包内,单元测试仅用于unit test用

应用模拟数据对dao层进行测试,使得dao措施的测试结果可被预感

三、若何在Spring下书写一个单元测试措施

留意两行:

这样一个差错,为什么?

其缘故原由在于我们的工程是在eclipse里应用的m2 eclipse这个插件天生的,是以在做单元测试时因为我们的unit test的类是放在test/main/java这个目录下,而这个目录亚游app集团下载是我们手工建的,是以eclipse不知道这个目录的对应的编译输出的class的目录了.

不要紧,按照下面的措施:

右键->选择run as->run configuration,打开如下的设置

选择classpath这个选项栏

单击user Entries

单击Advanced按钮

在弹出框中选择Ad亚游app集团下载d Folders

点ok按钮

鄙人一个弹出框中选择我们的junit test的源码在被编译后输出的目录即myssh2工程的WebContent/WEB-INF/classes目录,对吧。

3.2 结合dbunit来做单元测试

我们有了junit为什么还要引入一个dbunit呢?这不是画蛇添足吗?

试想一下下列场景:

我们开拓时连的是开拓用的数据库,一张表里有一堆的数据,有些数据不是自己的插的是其它的开拓职员插的,那么我想要测试一个dao或者是service措施,得到一个List,然后判断这个List里的值是否为我想要的时刻,有可能会碰着下属这样的环境:

运行我的service或者dao措施获得一个list,该list含有6个值,但恰恰在运行时另一个开拓职员由于测试必亚游app集团下载要往数据库里又插了一些值,导致我的测试措施掉败,对纰谬,这种环境是有可能的。

怎么办呢?对照好的做法是我们必要筹备一份自己的营业数据即prepare data,由于是我们自己筹备的数据数据,是以它在颠末这个措施运行后获得的值,这个获得的值是要颠末一系列的营业逻辑的是吧?是以这个获得的值即:expected data是可以被正确预感的。

是以,我们拿着这个expected data与运行了我们的营业措施后获得的结果进行比对,假如比对结果同等,则必然是测试成功,否则掉败,对吧?

这便是我们常说的,测试用数据必如果一份干净的数据。

那么为了维持我们的数据干净,我们在测试前清空我们的营业表,插入数据,运行测试地亚游app集团下载,比对结果,删除数据(也可以不删除,由于每次运行时都邑清空相关的营业表),这也便是为什么我们亚游app集团下载事先要专门搞一个数据库或者是数据库实例,在运行单元测试时我们的数据库连接必要指向到这个单元测试专用的数据库的缘故原由了,见下面的测试流程表:

有了DbUnit,它就可以赞助我们封装:

筹备测试用数据

清空相关营业表

插入测试数据

比对结果

清除先前插入的营业数据

这一系列底层的操作。

3.3 构建spring+junit+dbunit的框架

撤除上述的一些类和设置设置设备摆设摆设我们还必要3个基类,它们分手位于test/main/java目录下(由于它们都属于unit test对吧)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: