Springboot测试类之@RunWith注解

@runWith注解作用:
--@RunWith就是一个运行器
--@RunWith(JUnit4.class)就是指用JUnit4来运行
--@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环 境,以便在测试开始的时候自动创建Spring的应用上下文
--@RunWith(Suite.class)的话就是一套测试集合

引申:
Spring Boot 1.5.2 Junit测试
使用 Spring 进行单元测试

方法1:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@EnableAutoConfiguration
public class BBTestAA {
    @Autowired
    private TestRestTemplate testRestTemplate;

    //Application.class 为SpringBoot的启动入口类,每个SpringBoot项目大家都会配置
}

如果pom.xml中有如下代码,这行@RunWith(SpringRunner.class)就不会出现SpringRunner,反而有@RunWith(SpringJUnit4ClassRunner.class)



    org.springframework
    spring-test
    4.2.4.RELEASE

如果pom.xml中没有这段,则@RunWith(SpringRunner.class)不会报错。如果有这段:①未注释test会报错;②注释test不会报错


    junit
    junit
    4.12
    test

如果pom.xml中没有这段,则会报错。如果有这段:①未注释testSpringRunner、SpringBootTest无法引用,会报错;②注释test不会报错


    org.springframework.boot
    spring-boot-starter-test
    1.5.9.RELEASE
    test

总结起来,想要使用

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)

pom.xml中应该引用这两个


        
            
            
            
        

        
        
            org.springframework.boot
            spring-boot-starter-test
            1.5.9.RELEASE
            
        

        
        
            junit
            junit
            4.12
            
        

方法2:
如果有test@RunWith报红,没有test会引入该类


    junit
    junit
    4.12
    test

如果有test@SpringBootTest报红,没有test会引入该类


    org.springframework.boot
    spring-boot-test
    1.5.9.RELEASE
    test

如果是4.2.4.RELEASESpringRunner报红,如果4.2.4.RELEASE会引入该类


    org.springframework
    spring-test
    4.2.4.RELEASE

所以最后要正确使用,需引入这些架包


        
            org.springframework
            spring-test
            4.3.7.RELEASE
        

        
            org.springframework.boot
            spring-boot-test
            1.5.9.RELEASE
        

        
            junit
            junit
            4.12
        

2.在IDE中新增JunitTest类

@RunWith(SpringRunner.class) //14.版本之前用的是SpringJUnit4ClassRunner.class
@SpringBootTest(classes = Application.class) //1.4版本之前用的是//@SpringApplicationConfiguration(classes = Application.class)
public class SystemInfoServiceImplTest {

        @Autowired
        private ISystemInfoService systemInfoservice;

        @Test
        public void add() throws Exception {
        }

        @Test
         public void findAll() throws Exception {
         }

}

主要是注解的更改,如果注解用的不对,会报各种奇怪的问题,例如applicationContext找不到,datasource实例化失败等等。

3.为了支持上面两个注解,maven文件中要用对依赖以及版本,我当时添SpringRunner.class所在的依赖jar时,由于用了idea的auto-imported,IDE自动导入了版本是3.x的,实际应该导入4.x,我一直以为idea导入的是正确的,导致在这上面费时颇多,后来我手工写入就解决了。下面是正确的spring boot test的maven依赖

你可能感兴趣的:(单元测试,spring,spring,boot)