【spring】SpringJUnit4ClassRunner 单元测试

1. pom.xml中加入依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.3.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>4.3.0.RELEASE</version>
</dependency>

2.单元测试基本类

package com.hshbic.cloudapp.junit;


import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;


@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration({
    
    "classpath:spring/*.xml"})
@Rollback(value=false)
@Transactional(transactionManager="transactionManager")
public class BaseJunitTest {
    
    

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    
    
        System.out.println("==============单元测试开始=============");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    
    
        System.out.println("==============单元测试结束=============");
    }

    

}

注解说明:

  • @RunWith:固定值,用于指定junit运行环境,是junit提供给其他框架测试环境接口扩展,为了便于使用spring的依赖注入,spring提供了org.springframework.test.context.junit4.SpringJUnit4ClassRunner作为Junit测试环境

  • @ContextConfiguration 导入配置文件。
    这里我的applicationContext配置文件是根据xml来定义的,也可以指定class作为配置的载体。

    • 如果所有的都是写在“applicationContext.xml”中则通过locations 这样导入:
       @ContextConfiguration(locations = "classpath:applicationContext.xml")
    
    • 如果是多个文件,通过classpath单独指定:
    @ContextConfiguration({
          
          "classpath:applicationContext.xml","classpath:spring/buyer/applicationContext-service.xml"})
    
    • 也可以通过classes 来指定class作为配置的载体
    @ContextConfiguration(classes = {
          
          TestConfig.class})
    
  1. @Rollback 和 transactionManager @Rollback(新增注解)代替,其中只有一个属性就是boolean型的value,作用没变,值为true表示测试时如果涉及了数据库的操作,那么测试完成后,该操作会回滚,也就是不会改变数据库内容;值为false则与此相反,表示你测试的内容中对数据库的操作会真实的执行到数据库中,不会回滚。

  2. 单元测试中setUp方法和setUpBeforeClass方法的区别
    setUp方法原来是每个方法测试之前都会调用一次,而setUpBeforeClass则在整个类测试过程中只调用一次。同理,tearDown和tearDownAfterClass的方法也是在于此。setUpBeforeClass和tearDownAfterClass这两个方法是在junit4中新增的,junit3中没有。

5)创建基本单元测试类的目的是在父类加载了spring等配置文件,子类不需要再次加载,减少重复操作

参考:
《》

猜你喜欢

转载自blog.csdn.net/m0_45406092/article/details/114693685