- 配置依赖
文件名:pom.xml(部分)
<!-- Spring 单元测试,需要JUint -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.1.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope><!-- 表示开发的时候引入,发布的时候不会加载此包 -->
</dependency>
- 建立与src同级的测试源码目录 (test),编写测试基类。
BastTest类负责加载配置文件,设置事务等。之后的所有测试类都可以直接继承此类,就不需要每次都加载配置文件。
文件名:BaseTest.java
package com.spz.spzblog.test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
/**
* 测试基类
*/
@RunWith(SpringJUnit4ClassRunner.class) //使用Spring实现的测试执行类
@ContextConfiguration({"/spring/*.xml","/mybatis/*.xml"}) //加载配置文件
//@Transactional
//@TransactionConfiguration(transactionManager = "transactionManager",defaultRollback = true)
public class BaseTest {
}
Transactional和TransactionConfiguration注解使得数据库数据不会被测试程序污染。如果在测试基类中不配置这两个注解,则需要给需要事务管理的测试方法添加事务注解。
文件名:UserTest.java
package com.spz.spzblog.test.usertest;
import com.spz.spzblog.po.User;
import com.spz.spzblog.service.UserService;
import com.spz.spzblog.test.BaseTest;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;
/**
* 用户相关测试
*/
public class UserTest extends BaseTest{
@Autowired
private UserService userServiceImpl;
@Test
@Transactional//启用事务
@Rollback(true)//方法结束自动回滚,false为不回滚
public void aa()throws Exception{
User user = new User();
user.setUser_name("spz");
user.setUser_pass("123");
user = userServiceImpl.getUser(user);//此方法会访问数据库
if(user != null){//搜索到该用户
System.out.println("I find it:" + user.getUser_name());
}else{
System.out.println("Error!");
}
}
}
环境:
SpringMVC、Spring、Mybatis、Maven、IntelliJ IDEA、JDK1.8
Spring项目使用JUint进行单元测试的缺点:
http://blog.csdn.net/shan9liang/article/details/40452469
参考
http://blog.csdn.net/shan9liang/article/details/40452469