zoukankan      html  css  js  c++  java
  • 【Junit】Junit 与 Spring 整合测试

      本章介绍使用 Junit4 测试 Spring,关于 Junit4 的基本使用 参考:【Junit】Junit快速入门

    一、项目框架

    1、搭建一个Maven项目,引入 spring依赖、spring-test依赖 和 junit依赖

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>com.test.junit</groupId>
     8     <artifactId>test-junit-spring</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10 
    11     <properties>
    12         <!-- spring -->
    13         <spring.version>5.2.4.RELEASE</spring.version>
    14         <!-- Junit4 -->
    15         <junit.version>4.12</junit.version>
    16         <maven.compiler.source>8</maven.compiler.source>
    17         <maven.compiler.target>8</maven.compiler.target>
    18     </properties>
    19 
    20     <dependencies>
    21         <!-- Spring -->
    22         <dependency>
    23             <groupId>org.springframework</groupId>
    24             <artifactId>spring-context</artifactId>
    25             <version>${spring.version}</version>
    26         </dependency>
    27 
    28         <!-- Spring Test 模块 -->
    29         <dependency>
    30             <groupId>org.springframework</groupId>
    31             <artifactId>spring-test</artifactId>
    32             <version>${spring.version}</version>
    33             <scope>test</scope>
    34         </dependency>
    35 
    36         <!-- junit依赖 -->
    37         <dependency>
    38             <groupId>junit</groupId>
    39             <artifactId>junit</artifactId>
    40             <version>${junit.version}</version>
    41         </dependency>
    42     </dependencies>
    43 
    44 </project> 

    2、准备一个Spring xml配置文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xmlns:aop="http://www.springframework.org/schema/aop"
     5        xmlns:context="http://www.springframework.org/schema/context"
     6        xmlns:tx="http://www.springframework.org/schema/tx"
     7        xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     8                 http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop-4..xsd
     9                 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.0.xsd
    10                 http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
    11 
    12     <bean id="date" class="java.util.Date"></bean>
    13 </beans>

    二、使用Junit4 测试 Spring

    方法1:利用 @BeforeClass + xml文件 启动Spring容器

     1 package com.test.junite.spring;
     2 
     3 import org.junit.BeforeClass;
     4 import org.junit.Test;
     5 import org.springframework.context.ApplicationContext;
     6 import org.springframework.context.support.ClassPathXmlApplicationContext;
     7 
     8 import java.util.Date;
     9 
    10 /**
    11  * 利用 @BeforeClass 注解启动Spring容器,开始测试
    12  * @BeforeClass:它会在所有方法运行前被执行,static修饰
    13  */
    14 public class SpringTest {
    15 
    16     private static ApplicationContext context = null;
    17 
    18     @BeforeClass
    19     public static void setUpBeforeClass() throws Exception {
    20         context = new ClassPathXmlApplicationContext("applicationContext.xml");
    21     }
    22 
    23 
    24     @Test
    25     public void test() {
    26         Date date = (Date) context.getBean("date");
    27         System.out.println(date);
    28     }
    29 }

    方法2:利用 @BeforeClass + 配置类 启动Spring容器

     1 package com.test.junite.spring;
     2 
     3 import org.junit.BeforeClass;
     4 import org.junit.Test;
     5 import org.springframework.context.ApplicationContext;
     6 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
     7 import org.springframework.context.annotation.Bean;
     8 import org.springframework.context.annotation.Configuration;
     9 
    10 import java.util.Date;
    11 
    12 /**
    13  * 利用 @BeforeClass 注解启动Spring容器,开始测试
    14  * @BeforeClass:它会在所有方法运行前被执行,static修饰
    15  */
    16 public class SpringTest2 {
    17 
    18     private static ApplicationContext context = null;
    19 
    20     @BeforeClass
    21     public static void setUpBeforeClass() throws Exception {
    22         context = new AnnotationConfigApplicationContext(MyConfig.class);
    23     }
    24 
    25 
    26     @Test
    27     public void test() {
    28         Date date = (Date) context.getBean("date");
    29         System.out.println(date);
    30     }
    31 
    32     @Configuration
    33     static class MyConfig {
    34         @Bean
    35         public Date date(){
    36             return new Date();
    37         }
    38     }
    39 }

    方法3:利用 @RunWith运行器 + xml文件 启动Spring容器

     1 /**
     2  * 利用 @RunWith 运行器,来运行一个Spring环境,@ContextConfiguration 导入相关配置
     3  *
     4  * @RunWith作用
     5  * @RunWith 就是一个运行器
     6  * @RunWith(JUnit4.class) 就是指用JUnit4来运行
     7  * @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
     8  * @RunWith(Suite.class) 的话就是一套测试集合,
     9  */
    10 // junit整合spring的测试
    11 // SpringRunner 继承了SpringJUnit4ClassRunner,
    12 // 没有扩展任何功能;使用SpringRunner,名字简短而已
    13 @RunWith(SpringRunner.class)
    14 // @RunWith(SpringJUnit4ClassRunner.class)
    15 // 加载核心xml配置文件,自动构建spring容器
    16 @ContextConfiguration(locations="classpath:applicationContext.xml")
    17 public class SpringTest3 {
    18 
    19     @Autowired
    20     private ApplicationContext contex;
    21 
    22 
    23     @Test
    24     public void test() {
    25         Date date = (Date) contex.getBean("date");
    26         System.out.println(date);
    27     }
    28 }

    方法4:利用 @RunWith运行器 + 配置类 启动Spring容器

     1 package com.test.junite.spring;
     2 
     3 import org.junit.Test;
     4 import org.junit.runner.RunWith;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.context.ApplicationContext;
     7 import org.springframework.context.annotation.Bean;
     8 import org.springframework.context.annotation.Configuration;
     9 import org.springframework.context.annotation.Import;
    10 import org.springframework.test.context.junit4.SpringRunner;
    11 
    12 import java.util.Date;
    13 
    14 // junit整合spring的测试
    15 @RunWith(SpringRunner.class)
    16 // 导入配置类,自动构建spring容器
    17 @Import(SpringTest4.MyConfig.class)
    18 public class SpringTest4 {
    19 
    20     @Autowired
    21     private ApplicationContext contex;
    22 
    23     @Test
    24     public void test() {
    25         Date date = (Date) contex.getBean("date");
    26         System.out.println(date);
    27     }
    28 
    29     @Configuration
    30     static class MyConfig{
    31         @Bean
    32         public Date date() {
    33             return new Date();
    34         }
    35     }
    36 }
  • 相关阅读:
    maven使用杂记
    Gradle中的SourceSet理解
    CyclicBarrier正确的使用方法和错误的使用方法
    jstack 结果查看
    java1.8中ConcurrentHashMap
    grub2配置关键(三个核心变量prefix、root、cmdpath)和几点疑问
    关于docker的理解随记
    docker中的命令参数(小白常用)
    tmux快捷键汇总(常用)
    archlinux安装gnome的一些坑随记
  • 原文地址:https://www.cnblogs.com/h--d/p/14702868.html
Copyright © 2011-2022 走看看