spring单元测试,据传说很简单,但按照网上的方法总有问题。换了一种方法试成功了。
1.表:
sql 代码
- create table t_user (
- id varchar(20) not null,
- name varchar(20) null
- constraint PK_T_USER primary key (id)
- )
java 代码
- package com.forum.model;
- // Generated 2007-5-9 9:42:02 by Hibernate Tools 3.2.0.b9
- /**
- * TUser generated by hbm2java
- */
- public class User implements java.io.Serializable {
- private String id;
- private String name;
- public User() {
- }
- public User(String id) {
- this.id = id;
- }
- public User(String id, String name) {
- this.id = id;
- this.name = name;
- }
- public String getId() {
- return this.id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
hbm文件:
xml 代码
- xml version="1.0"?>
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="com.forum.model.User" table="t_user" schema="dbo" catalog="forum">
- <id name="id" type="string">
- <column name="id" length="20" />
- <generator class="assigned" />
- id>
- <property name="name" type="string">
- <column name="name" length="20" />
- property>
- class>
- hibernate-mapping>
3.spring层(作为服务层)
java 代码
- package com.forum.service;
- import com.forum.model.User;
- import java.util.List;
- public class UserService extends BaseService {
- private static final String SQL_SELECT_BYID = "from User as u where u.id=?";
- public User findUserById(String userId) throws ServiceException {
- try {
- List list = hibernateTemplate.find(SQL_SELECT_BYID, userId);
- return list.isEmpty() ? null : (User) list.get(0);
- } catch (Exception e) {
- throw new ServiceException("Cannot find the User[" + userId + "]: " + e, e);
- }
- }
- }
java 代码
- package com.forum.service;
- import org.springframework.orm.hibernate3.HibernateTemplate;
- import java.util.List;
- public abstract class BaseService implements java.io.Serializable {
- protected HibernateTemplate hibernateTemplate;
- public HibernateTemplate getHibernateTemplate() {
- return hibernateTemplate;
- }
- public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
- this.hibernateTemplate = hibernateTemplate;
- }
- }
测试类:
java 代码
- package com.forum.service;
- import com.forum.model.User;
- import org.junit.Before;
- import org.junit.Test;
- public class UserServiceTest extends BaseServiceTest {
- private User user;
- private UserService userService;
- @Before
- protected void setUp() throws Exception {
- userService = (UserService) ctx.getBean("userService");
- }
- @Test
- public void testFindUserById() throws Exception {
- user = userService.findUserById("1");
- assertNotNull(user);
- }
- }
4.applicationContext_test.xml 放在class下或者src目录下。
java 代码
- "1.0" encoding="UTF-8"?>
- "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- default-autowire="byName">
- "dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- "driverClassName"><value></value>net.sourceforge.jtds.jdbc.Driver
- "url"><value></value>jdbc:jtds:sqlserver://127.0.0.1:1433/forum
- "username"><value></value>sa
- "password"><value></value>sa
- "sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- "configLocation">
- <value></value>classpath:hibernate.cfg.xml
- "dataSource">
- "dataSource"/>
- "hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
- "sessionFactory">
- "sessionFactory"/>
- "userService" class="com.forum.service.UserService">
- "hibernateTemplate" ref="hibernateTemplate"/>
hibenate.cfg.xml 的内容自己完成。工具自动生成的时候就有的。
5. 运行就可以了。
6。注意问题: spring 测试时要导入相应的jar文件(它的lib下有)