Spring 6 第6章——单元测试:Junit

一、整合JUnit5

在之前的测试方法中,几乎都能看到以下两行代码:

ApplicationContext context = new ClassPathXmlApplicationContext("xxx.xml");
Xxxx xxx = context.getBean(Xxxx.class);

这两行代码的作用是创建Spring容器,最终获取到对象,但是每次测试都需要重复编写

针对上述问题,我们需要的是程序能自动帮我们创建容器,我们都知道JUnit无法知晓我们是否使用了Spring框架,更不用说帮我们创建Spring容器了

Spring提供了一个运行器,可以读取配置文件(或注解)来创建容器。我们只需要告诉它配置文件位置就可以了

这样一来,我们通过Spring整合JUnit可以使程序创建Spring容器了

(1)搭建子模块

  1. 搭建子模块spring6-junit
  2. 如图所示:Spring 6 第6章——单元测试:Junit_第1张图片

(2)引入依赖

  1. 引入相关依赖:
    
        
        
        
            org.springframework
            spring-context
            6.0.2
        
    
        
        
            org.springframework
            spring-test
            6.0.2
        
    
        
        
            org.junit.jupiter
            junit-jupiter-api
            5.9.0
        
    
        
        
            org.apache.logging.log4j
            log4j-core
            2.19.0
        
        
            org.apache.logging.log4j
            log4j-slf4j2-impl
            2.19.0
        
    

(3)添加配置文件

  1. 添加Spring的配置文件:Spring 6 第6章——单元测试:Junit_第2张图片
  2. XML文件代码:
    
    
    
           
    

(4)添加Java类

  1. 编写一个User类:
    package com.atguigu.spring6.junit.junit5;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class User {
    
        public void run(){
            System.out.println("user......");
        }
    
    }

(5)测试

  1. 测试类和测试方法:
    package com.atguigu.spring6.junit.junit5;
    
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
    
    @SpringJUnitConfig(locations = "classpath:bean.xml")
    public class SpringTestJUnit5 {
        @Autowired
        private User user;
        //测试方法:
        @Test
        public void testUser(){
            System.out.println(user);
            user.run();
        }
    }
  2. 测试效果:Spring 6 第6章——单元测试:Junit_第3张图片 
  3. 或者还有一种注解方式,也能成功
    package com.atguigu.spring6.junit.junit5;
    
    import org.junit.jupiter.api.Test;
    import org.junit.jupiter.api.extension.ExtendWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit.jupiter.SpringExtension;
    
    @ExtendWith(SpringExtension.class)
    @ContextConfiguration("classpath:bean.xml")
    public class SpringTestJUnit5 {
        @Autowired
        private User user;
        //测试方法:
        @Test
        public void testUser(){
            System.out.println(user);
            user.run();
        }
    }
     Spring 6 第6章——单元测试:Junit_第4张图片

二、整合JUnit4

(1)添加依赖

  1. 引入相关依赖:
    
    
        junit
        junit
        4.12
    
  2. 这时JUnit4和JUnit5的不同之处:Spring 6 第6章——单元测试:Junit_第5张图片
  3. 第二个不同之处:JUnit4JUnit5

(2)测试

  1. 测试代码:
    package com.atguigu.spring6.junit.junit4;
    
    import com.atguigu.spring6.junit.junit5.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:bean.xml")
    public class SpringTestJUnit4 {
        @Autowired
        private User user;
        @Test
        public void testUser(){
            System.out.println(user);
            user.run();
        }
    }
  2. 测试效果:Spring 6 第6章——单元测试:Junit_第6张图片

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