SSH框架下用JUnit和spring-test和EasyMock单元测试
2016-06-02 02:59
651 查看
首先贴个异常先,
下面是异常的截图:
莫慌,我出现这个的异常是因为spring版本是2.5.x的而myeclipse10自带的JUnit是4.8版本的,不兼容,会报异常,解决方法是把JUnit的版本改到
4.4(4.3应该也可以)把原来的JUnit从Build Path里去掉手动添加junit4.4的jar包,我已经分享到CSDN的下载资源中,JUnit4.4下载,将解压后里
面的junit4.4.jar手动添加到lib中去,或者用Build Path添加也可以。这样就不会报这个异常了。未完待续……先睡觉了,
测试Action层
用Junit和EasyMock测试注册用例说明及结果截图
1. 没有相同用户名,可以用该用户名注册
说明:为需要调用的IuserService接口实例创建mock对象,并模拟返回find(查找数据库中是否同名)结果为null,即数据库中
无该用户名,可以注册
2.测试DAO层
遇到问题:
错误提示没有在spring配置文件中为Book类添加bean,我们把它加上。
这里是一个数据库查找的DAO,设置查询条件为根据“author”查找,然后设置作者参数为“安得”,然后用spring-test配置的bookDAO模拟数据库查询。
如果返回图书书名为“安德的游戏”则表示测试成功。
测试代码:
测试通过截图
这样接下去类似地做就能顺利完成对数据库CRUD测试了。
NoClassDefFoundError: org/junit/Assume$AssumptionViolatedException
下面是异常的截图:
莫慌,我出现这个的异常是因为spring版本是2.5.x的而myeclipse10自带的JUnit是4.8版本的,不兼容,会报异常,解决方法是把JUnit的版本改到
4.4(4.3应该也可以)把原来的JUnit从Build Path里去掉手动添加junit4.4的jar包,我已经分享到CSDN的下载资源中,JUnit4.4下载,将解压后里
面的junit4.4.jar手动添加到lib中去,或者用Build Path添加也可以。这样就不会报这个异常了。未完待续……先睡觉了,
测试Action层
用Junit和EasyMock测试注册用例说明及结果截图
1. 没有相同用户名,可以用该用户名注册
说明:为需要调用的IuserService接口实例创建mock对象,并模拟返回find(查找数据库中是否同名)结果为null,即数据库中
无该用户名,可以注册
package com.user.action; import static org.junit.Assert.*; import com.user.entity.User; import com.user.service.IUserService; import com.user.dao.UserDAO; import org.junit.Test; import org.easymock.EasyMock; import org.junit.runner.RunWith; /*import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:beans.xml")*/ public class RegisterTest { /** * @param args */ /* * @Autowired * * @Qualifier("user") */ private User user = new User(); /* * @Autowired * * @Qualifier("userDAO") */ private UserDAO userDAO; /* * @Autowired * * @Qualifier("userService") */ private IUserService userService; private RegistAction registAction = new RegistAction(); static String username = "louzhefeng"; static String password = "pass"; static String name = "louzhefeng"; static int age = 12; static String address = "小和山"; public RegisterTest() { } // getUsername测试用例 @Test public void testGetUsername() { User user2 = new User(); String name1 = "haha"; user.setUsername(username); String expResult = "louzhefeng"; String result = user.getUsername(); assertEquals(expResult, result); } // 使用EasyMock和JUnit测试注册用例的Action层 @Test public void testRegister() { User user1 = null; // 表示查找不到相同用户名,可以用该用户名注册 //User user1=new User(); IUserService mock = EasyMock.createMock(IUserService.class);// 为IUserService创建mock对象 EasyMock.expect(mock.find("username", username)).andReturn(user1);// find方法表示查找数据库中是否已有该用户名 User user3 = new User(); mock.create(user3);// regist方法中需要执行,必须放在replay(mock)之前!! EasyMock.replay(mock); user3.setUsername(username); registAction.setUser(user3); registAction.setUserService(mock);// 将mock对象set进来 String result = registAction.regist(); String expResult = "regist"; assertEquals(expResult, result); } }
2.测试DAO层
遇到问题:
错误提示没有在spring配置文件中为Book类添加bean,我们把它加上。
<bean id="book" class="com.book.entity.Book" />
这里是一个数据库查找的DAO,设置查询条件为根据“author”查找,然后设置作者参数为“安得”,然后用spring-test配置的bookDAO模拟数据库查询。
如果返回图书书名为“安德的游戏”则表示测试成功。
测试代码:
package com.book.dao; import java.util.List; import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;//需要用到事务管理(比如要在测试结果出来之后回滚测试内容)时可以使用 import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import com.book.entity.Book; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:beans.xml") public class TestBookDAO extends AbstractJUnit4SpringContextTests { public TestBookDAO(){ } @Autowired @Qualifier("book") private Book book; @Autowired @Qualifier("bookDAO") private BookDAO bookDAO; @Test public void testFind(){ String key="author"; String value="安得"; String expBookname="安德的游戏"; List<Book> list=(List)bookDAO.findObjects(key, value); for(Book b:list){ assertEquals(expBookname,b.getBookname()); } } }
测试通过截图
这样接下去类似地做就能顺利完成对数据库CRUD测试了。
相关文章推荐
- Java常用排序算法之插入排序
- 四、java面向对象编程_2
- Java设计模式——装饰者模式
- [Java Concurrent] 并发访问共享资源的简单案例
- 查看.class文件的版本号
- 基于Spring4+Hibernate4的通用数据访问层+业务逻辑层(Dao层+Service层)设计与实现!
- (Java)LeetCode-23. Merge k Sorted Lists
- struts2框架报错记录二
- Java多线程-线程同步问题
- java将固定长度的byte数组转成String,并去掉后面多余的0
- java读取xml(DOM解析)
- jvm学习-垃圾收集
- eclipse中Server视图加载项目之后项目名后边有带括号的名字
- 10个实用的但偏执的Java编程技术
- Java高效读取大文件
- Spring 返回Json
- Web图表控件ChartDirector使用教程:轻松创建Java图表应用程序
- JBoss与jdk版本
- Exception in thread "main" java.lang.NoClassDefFou
- Java Zip 压缩、解压