您的位置:首页 > 编程语言 > Java开发

SSH框架下用JUnit和spring-test和EasyMock单元测试

2016-06-02 02:59 651 查看
首先贴个异常先,
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测试了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: