Maven + Spring + Hibernate + Struts2 整合第三部分

现在我们写一个简单的单元测试来测试一下我们的代码,看看是不是配置文件都配好了。在src/test/java下面建立UserDAOTest.java文件,代码如下:

package localhost.login.dao;

import java.util.List;

import junit.framework.Assert;
import junit.framework.TestCase;
import localhost.login.domain.User;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserDAOTest extends TestCase{
private ApplicationContext context = null;

private User user = null;

private UserDAO userDAO = null;

@Override
protected void setUp() throws Exception {
super.setUp();
context = new ClassPathXmlApplicationContext("applicationContext.xml");
userDAO = (UserDAO)context.getBean("userDAO");
}

@Override
protected void tearDown() throws Exception {
userDAO = null;
user = null;
}

public void testAddUser(){
user = new User();
user.setName("username");
user.setPassword("password");
userDAO.addUser(user);
Assert.assertEquals(1, user.getId());
userDAO.addUser(user);
Assert.assertEquals(1, user.getId());

User userTwo = new User();
userTwo.setName("username1");
userTwo.setPassword("password");
userDAO.addUser(userTwo);
Assert.assertEquals(2, userTwo.getId());

}

public void testlistAll(){
List<User> users = userDAO.listAll();
Assert.assertEquals(users.size(), 2);
}
}


现在我们建立一个简单的辅助类,来获得ApplicationContext, 将它放在localhost.login.util包下面:

package localhost.login.util;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class InitApplicationContext {

private static ApplicationContext context = null;

private InitApplicationContext(){

}
public static ApplicationContext getApplicationContext(){
if(context == null){
context = new ClassPathXmlApplicationContext("applicationContext.xml");
}
return context;
}
}


现在我们建立用户登陆的action,struts2的action比较简单,请看下面代码:

package localhost.login.action;

import java.util.List;

import localhost.login.domain.User;
import localhost.login.service.UserService;
import localhost.login.util.InitApplicationContext;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.opensymphony.xwork2.ActionSupport;

public class UserLoginAction extends ActionSupport {
private UserService userService;
private User user;

public UserLoginAction() {
ApplicationContext context = InitApplicationContext.getApplicationContext();
userService = (UserService) context.getBean("userService");
}

@Override
public String execute() throws Exception {
if (!isValid(user.getName())) {
return INPUT;
}
if (!isValid(user.getPassword())) {
return INPUT;
}
if(!userCheck(user)){
return INPUT;
}
return SUCCESS;
}

public boolean isValid(String keyword) {
return keyword != null && keyword != "";
}

public boolean userCheck(User user) {
List<User> userList = userService.findUserByName(user.getName());
if (userList == null || userList.size() < 1) {
return false;
}
User checkUser = userList.get(0);
if (user.getName().equals(checkUser.getName())
&& user.getPassword().equals(checkUser.getPassword())) {
return true;
}
addActionError("Username or password is wrong, please check!");
return false;
}

public UserService getUserService() {
return userService;
}

public void setUserService(UserService userService) {
this.userService = userService;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}
}

struts2比struts1最大的优点就是使得单元测试比较容易,现在我们就建立一个简单的测试用例来测试我们刚建立的action
把它放到src/main/java包底下,代码如下:

package localhost.login.action;
import junit.framework.Assert;
import junit.framework.TestCase;
import localhost.login.domain.User;
import localhost.login.service.UserService;
import localhost.login.util.InitApplicationContext;

import org.springframework.context.ApplicationContext;

import com.opensymphony.xwork2.Action;


public class UserLoginActionTest extends TestCase{
private User user;

private UserService userService;

private ApplicationContext context = null;

private UserLoginAction loginAction = null;

public void setUp(){
context = InitApplicationContext.getApplicationContext();
loginAction = new UserLoginAction();
userService = (UserService)context.getBean("userService");
}

public void testUserLogin(){
user = new User();
user.setName("username");
user.setPassword("password");
try {
loginAction.setUser(user);
loginAction.setUserService(userService);
Assert.assertEquals(Action.SUCCESS, loginAction.execute());
user.setPassword("password1");
System.out.println(loginAction.getActionErrors());
Assert.assertEquals(Action.INPUT, loginAction.execute());
} catch (Exception e) {
e.printStackTrace();
}
}
}


现在到我们配置web.xml的时候了,到目前为止,它现在还是空的。
我们加上struts2的过滤器和spring的监听器。请看下面代码:

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Common Login</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispather.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值