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

作者: 后端技术学习分享 | 来源:发表于2017-11-05 16:32 被阅读62次
    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

    相关文章

      网友评论

        本文标题:[Spring] Spring Test结合JUnit的单元测试

        本文链接:https://www.haomeiwen.com/subject/hhxhmxtx.html