zoukankan      html  css  js  c++  java
  • Spring集成Junit

    1.原始Junit测试Spring的问题

    在测试类中,每个测试方法都有以下两行代码。每个测试都要重新启动Spring容器,启动容器的开销大,测试效率低下。

     这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常,所以不能轻易删掉

    2.上述问题解决思路

    (1)让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它

    (2)将需要进行测试Bean直接在测试类中进行注入

    3.Spring集成Junit步骤

    (1)导入spring集成Junit坐标(在pom.xml中导入)

    (2)使用@Runwith注解替换原来的运行期

    (3)使用@ContextConfiguration指定配置文件或配置类

    (4)使用@Autowired注入需要测试的对象

    (5)创建测试方法进行测试

     

    @RunWith作用

    @RunWith 就是一个运行器

    @RunWith(JUnit4.class) 就是指用JUnit4来运行

    @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境

    @RunWith(Suite.class) 的话就是一套测试集合,

    @ContextConfiguration Spring整合JUnit4测试时,使用注解引入多个配置文件

    这种写法是为了让测试在Spring容器环境下执行。 Spring的容器环境是啥呢? 比如常见的 Service Dao Action , 这些个东西,都在Spring容器里,junit需要将他们拿到,并且使用来测试。

    package com.company.test;
    
    import com.company.service.UserService;
    
    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;
    
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class SpringJunitTest {
        // 测谁就将谁注入,加上@AutowiredSpring扫到这个注解之后,
        // 会尝试从Spring容器找到UserService类型的Bean,找到之后,直接给你注到这个地方
        @Autowired
        private UserService userService;
    
        @Autowired
        private DataSource dataSource;
    
        @Test
        public void test1() throws SQLException {
            userService.save();
            System.out.println(dataSource.getConnection());
        }
    }
    

     运行结果:

     

    上面用的是加载配置文件xml的方式

    下面使用全注解的方式

    package com.company.test;
    
    import com.company.config.SpringConfiguration;
    import com.company.service.UserService;
    
    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;
    
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    // @ContextConfiguration("classpath:applicationContext.xml")
    @ContextConfiguration(classes = {SpringConfiguration.class})
    public class SpringJunitTest {
        // 测谁就将谁注入,加上@AutowiredSpring扫到这个注解之后,
        // 会尝试从Spring容器找到UserService类型的Bean,找到之后,直接给你注到这个地方
        @Autowired
        private UserService userService;
    
        @Autowired
        private DataSource dataSource;
    
        @Test
        public void test1() throws SQLException {
            userService.save();
            System.out.println(dataSource.getConnection());
        }
    }
    

      SpringConfiguration

    package com.company.config;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    
    // 标志该类是Spring的核心配置类(不要配置文件,不是意味着不要配置,原来的配置只是用类的方式代替文件,用注解的方式代替标签)
    @Configuration
    // <context:component-scan base-package="com.company"/>
    @ComponentScan("com.company")
    // <import resource=""/>
    @Import({DataSourceConfiguration.class})
    public class SpringConfiguration {
    
    }
    

      

  • 相关阅读:
    Linux文件结构
    磁盘分区
    BASH简介
    磁盘的基本概念
    Linux文件操作
    创建文件系统
    文件系统挂载
    一些常用命令
    asp.net创建PPT
    asp.net创建、删除、移动文件夹 文件
  • 原文地址:https://www.cnblogs.com/GumpYan/p/14119123.html
Copyright © 2011-2022 走看看