[Spring] Spring Test结合JUnit的单元测试-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

[Spring] Spring Test结合JUnit的单元测试

简介: 配置依赖文件名:pom.xml(部分) org.springframework spring-test 4.1.1.RELEASE test junit junit 4.11 test 建立与src同级的测试源码目录 (test),编写测试基类。
  1. 配置依赖
    文件名: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>
  1. 建立与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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: