上一篇就针对spring开发时的2种方式给予Junit测试的一个简单说明。这篇为了给新人们一个明确的说明,我就直接符上代码,供大家参考;
1.实体类:
package com.tta.model; public class User implements java.io.Serializable { private Integer id; private String name; private Integer age; private String address; public User() { } public User(Integer age, String address) { this.age = age; this.address = address; } public User(String name, Integer age, String address) { this.name = name; this.age = age; this.address = address; } public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return this.address; } public void setAddress(String address) { this.address = address; } }
实体orm映射文件:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.tta.model.User" table="tb_model_user" > <id name="id" type="integer"> <column name="id" /> <generator class="native"></generator> </id> <property name="name" type="string"> <column name="name" length="20" /> </property> <property name="age" type="integer"> <column name="age" not-null="true" /> </property> <property name="address" type="string"> <column name="address" length="50" not-null="true" /> </property> </class> </hibernate-mapping>
2.服务层代码:
package com.tta.svc; import java.util.List; import com.tta.model.User; public interface IUserService { void saveUser(User u); void deleteUser(User u); void updateUser(User u); User findUserById(int userId); List<User> findUsers(); }
package com.tta.svc.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.tta.dao.IUserDao; import com.tta.model.User; import com.tta.svc.IUserService; @Service("userService") @Transactional public class UserService implements IUserService { private IUserDao useDao; @Override public void deleteUser(User u) { useDao.deleteUser(u); } @Override public User findUserById(int userId) { return useDao.findUserById(userId); } @Override public List<User> findUsers() { return useDao.findUsers(); } @Override public void saveUser(User u) { useDao.saveUser(u); } @Override public void updateUser(User u) { useDao.updateUser(u); } public void setUseDao(IUserDao useDao) { this.useDao = useDao; } }
3.数据操作层:
package com.tta.dao; import java.util.List; import com.tta.model.User; public interface IUserDao { void saveUser(User u); void deleteUser(User u); void updateUser(User u); User findUserById(int userId); List<User> findUsers(); }
package com.tta.dao.impl; import java.util.List; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; import com.tta.dao.IUserDao; import com.tta.model.User; @Repository("userDao") public class UserDao extends HibernateDaoSupport implements IUserDao { @Autowired public void setSuperSessionFactory(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory); } @Override public void deleteUser(User u) { getHibernateTemplate().delete(u); } @Override public User findUserById(int userId) { User u = new User(); u.setId(userId); return (User) getHibernateTemplate().findByExample(u).get(0); } @Override public List<User> findUsers() { //Model User // return getHibernateTemplate().find("from User"); //View User return getHibernateTemplate().find("select new User(age,address) from User"); } @Override public void saveUser(User u) { getHibernateTemplate().save(u); } @Override public void updateUser(User u) { getHibernateTemplate().merge(u); } }
4.spring配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config /> <context:component-scan base-package="com.tta.*" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mbpa"></property> <property name="username" value="root"></property> <property name="password" value="sainwind"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> <property name="mappingResources"> <list> <value>com/tta/model/User.hbm.xml</value> </list> </property> </bean> </beans>
最后,贴上我们的测试类:
package com.tta.svc.test; import java.util.List; import org.junit.Test; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tta.model.User; import com.tta.svc.IUserService; import com.tta.svc.impl.UserService; public class UserTest { private static ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); private static AutowireCapableBeanFactory autoBeanFactory = applicationContext.getAutowireCapableBeanFactory(); private static IUserService svc = (UserService)autoBeanFactory.getBean("userService"); // @Test public void save(){ User u = new User(22,"zhangsan"); svc.saveUser(u); } // @Test public void delete(){ svc.deleteUser(svc.findUserById(1)); } // @Test public void update(){ User u = svc.findUserById(1); u.setAddress("上海市徐汇区零陵路123号"); u.setAge(35); u.setName("赵冰"); svc.updateUser(u); } @Test public void getUsers(){ List<User> users = svc.findUsers(); for(User u : users){ System.out.println("name : "+u.getName()+" address:"+u.getAddress()); } } }
有问题可以一起探讨啊。希望大家多多指点。
相关推荐
接下来,JUnit测试部分,我们需要创建测试类,导入JUnit库,并使用`@Test`注解标注测试方法。每个测试方法模拟一次业务操作,如添加一个新记录、查询特定记录、修改记录或删除记录。测试类通常会注入相应的DAO,调用...
- **STA2JUnit Framework.ppt:** 另一份PPT,可能更侧重于介绍JUnit与其他测试框架的集成,如Spring Test或Mockito,以及如何在大型项目中使用JUnit。 通过学习这些资源,开发者可以熟练掌握JUnit,从而在软件开发...
详解Spring Boot Junit单元测试 本篇文章主要介绍了Spring Boot Junit单元测试的重要性和使用方法。单元测试是软件测试中的一种测试方法,通过编写测试用例来验证代码的正确性和稳定性。在Spring Boot项目中,使用...
Spring框架是Java应用程序开发中的一个核心工具,它提供了一个全面的编程和配置模型,促进了松散耦合、可测试和模块化的应用设计。在本压缩包"Spring框架测试.zip"中,包含的是用于进行Spring框架单元测试的重要组件...
在软件开发领域中,测试是一个非常重要的环节。JUnit 是一个流行的 Java 单元测试框架,而 SpringBoot 是一个基于 Java 的 Web 应用程序框架。今天,我们将讨论如何将 JUnit 与 SpringBoot 进行整合,以便更好地进行...
- **1.2.2.6 Test**:提供支持测试Spring组件的JUnit和TestNG集成。 - **1.2.3 Usage Scenarios 使用场景** - **1.2.3.1 Dependency Management and Naming Conventions 依赖关系管理和命名约定** - 介绍了如何...
`@Configuration`标注的类表示这是一个配置类,`@Bean`注解的方法会返回一个被Spring管理的Bean实例。 在依赖配置中,我们经常需要处理Bean之间的依赖关系。Spring支持构造器注入和setter注入两种方式。构造器注入...
本篇将主要探讨Spring框架的几个核心知识点,包括事务传播属性、注解式事务管理、注解式开发、SSM(Spring+SpringMVC+MyBatis)集成开发流程以及Spring与JUnit测试的整合。 **一、事务传播属性失效问题及解决** ...
Spring的SpringTest模块提供了一种基于JUnit的测试解决方案,可以为测试类提供IOC容器。因此,我们认为这是一个可行的技术路线。 3. 测试模块设计 测试模块主要由4个类组成,包括运行器类、测试类、日志类等。这些...
5. 其他可能的辅助库,如JUnit进行单元测试,Servlet API和JSTL用于Web开发。 配置好`pom.xml`后,执行`mvn install`命令,Maven将下载所有依赖并构建项目。接下来,我们需要创建Spring的配置文件,一般为`...
Spring支持使用JUnit等测试框架,同时也提供了Mock对象、测试切面等工具。 Spring框架支持多版本的JDK和JavaEE。在Spring 5.0.0中,引入了对JDK 8+的特性支持,如Lambda表达式和新的时间API。Spring 5的发布也标志...
参考Spring的SpringTest,它利用@RunWith注解在JUnit中集成Spring的IOC容器,为测试提供必要的上下文。因此,采用类似策略为BladeTest设计解决方案是可行的。 测试模块设计: 测试模块由四个主要类组成,包括运行...
- **单元测试编写**:介绍JUnit、Mockito等工具的使用,提高代码质量。 - **集成测试**:如何使用Spring Test或其他测试框架进行集成测试,确保系统整体运行正常。 #### 五、资源获取与学习建议 - **资源获取**:...
6. **测试与调试**:为了确保接口功能的正确性,通常会编写JUnit测试用例,模拟客户端调用服务进行添加操作,并验证数据是否成功存储到数据库中。这一步骤对于理解整个系统的运作机制非常重要。 通过这个示例,初学...
6. **测试与调试**:整合后的项目应该包含单元测试和集成测试,例如使用JUnit和Mockito进行Service层的单元测试,以及使用Spring Test和Hibernate Test进行整合测试,确保各个组件协同工作。 7. **应用结构**:一个...
3. **单元测试**:Spring MVC 的控制器可以轻松地与 JUnit 结合进行单元测试,无需启动整个应用环境即可测试控制器的功能。 #### 六、Spring MVC 配置文件详解 Spring MVC 的配置文件通常包含了以下几个关键部分:...
对于测试,Spring Boot也提供了spring-boot-starter-test启动器,该启动器集成了JUnit、Hamcrest和Mockito等库,便于开发者编写测试用例。 Spring Boot的起步依赖遵循一个命名规则,即spring-boot-starter-加上应用...
- **Test类**:可能包含JUnit测试用例,用来验证Spring和MyBatis的集成是否正常,例如测试数据的增删改查操作。 通过这个小示例,开发者可以学习到如何配置Spring和MyBatis的环境,编写SQL语句,以及如何将它们...
单元测试在软件开发中不可或缺,对于Spring MVC中的Action,可以通过JUnit进行单元测试。转发与重定向是Web开发中常用的两种请求处理方式,Spring MVC提供了简单的方法来实现带参数的重定向。 处理Ajax请求也是...