• Java Web(5) Spring 下使用Junit4 单元测试


    1. 如何在不启动Tomcat服务器的情况下对,Dao这些不依赖使用Servlet API的类来进行单元测试呢?

        其实在Spring框架体系中,已经有一套自己的测试代码,其中就是依赖使用Junit来进行测试 ,不需要启动Tomcat就可以对Dao来进行测试。

        至于什么是Junit呢,参见Junit

    2. 首先的第一步,就是添加依赖的类库,这里就需要再一次使用到神器Maven了,在pom.xml中添加

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.2.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency>

        在这里,需要注意一下,spring版本与Junit版本的兼容问题。前面我使用Spring是4.2.2的,在官方的文档中讲到

    NOTE: As of Spring Framework 4.1, this class requires JUnit 4.9 or higher.

        所以我使用了Junit 4.9 以上,否则运行JunitCase会抛异常

    3. 编写TestCase

    package test;
    
    import java.util.Iterator;
    import java.util.List;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import cn.tian.dao.*;
    import cn.tian.vo.*;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import org.springframework.transaction.annotation.Transactional;
    //首先指定Junit的Runner
    @RunWith(SpringJUnit4ClassRunner.class)
    //指明配置文件所在
    @ContextConfiguration(locations="classpath:applicationContext.xml")
    //指定事务管理器
    @Transactional(transactionManager="transactionManager")
    //继承AbstractTransactionalJUnit4SpringContextTests来获取Spring上下文环境来获取Bean
    public class UserDaoTest extends AbstractTransactionalJUnit4SpringContextTests{
     //spring依赖注入
    	@Autowired
    	private UserDao dao;
    	//JUnit注解 ,表明这是一个需要运行的测试方法
    	@Test
    	public void test(){
    		User admin = new User();
    		admin.setName("管理员");		
    		dao.insert(user);		
    	}	
    }

        就这样简单,就可以轻松布置JUnit的测试环境了

    4. 补充:如果在Web项目中配置有bean 的scope为“application”的时候,运行测试会显示Spring Context初始化错误。需要在添加一个注解@WebAppConfiguration,把WebApplicationContext加载上来,就解决了

    原文:https://my.oschina.net/asd1614/blog/530528

  • 相关阅读:
    PHP设计模式
    PHP 面向对象
    MYSQL 覆盖索引
    MYSQL IOPS、QPS、TPS
    MySQL 事务嵌套
    MySQL 慢查询优化
    MySQL 查询状态
    MySQL 乐观锁和悲观锁
    MySQL 分库、分表
    Spring Boot 全局异常捕捉,自定义异常并统一返回
  • 原文地址:https://www.cnblogs.com/onetwo/p/6370218.html
Copyright © 2020-2023  润新知