当前位置: 首页 > news >正文

Spring框架整合单元测试

目录

一、配置文件方式

1.导入依赖

2.编写类和方法

3.配置文件applicationContext-test.xml

4.测试类

5.运行结果

二、全注解方式

1.编写类和方法

2.配置类

3.测试类

4.运行结果


每次进行单元测试的时候,都需要编写创建工厂,加载配置文件等相关操作,比较繁琐,现在Spring提供了整合Junit单元测试的技术,可以简化测试开发,所以必须首先要有Junit单元测试的环境,也就是要导入Junit单元测试的依赖,还有spring-test的依赖

这里用了两种方式去整合,一种是配置文件的方式,一种是全注解的方式

一、配置文件方式

1.导入依赖

需要导入spring的核心依赖、Junit单元测试的依赖和spring-test的依赖

    <dependencies><!--spring的核心依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><!-- https://mvnrepository.com/artifact/log4j/log4j --><!--日志--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency>------------------------------------------------------//主要是这个<!--测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>-------------------------------------------------------<!--连接池--><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!--mysql--><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency>------------------------------------------------------------//也得有这个<!--spring-test--><!-- https://mvnrepository.com/artifact/org.springframework/spring-test --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.2.RELEASE</version><scope>test</scope></dependency>----------------------------------------------------------</dependencies>

2.编写类和方法

把该类交给spring去管理

public class User {public void sayHello(){System.out.println("Hello--------------");}
}

3.配置文件applicationContext-test.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--整合单元测试--><bean id="user" class="com.test.pojo.User"></bean>
</beans>

4.测试类

import com.test.pojo.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;/*
* Spring整合Junit单元测试
* */
@RunWith(value = SpringJUnit4ClassRunner.class)  //运行单元测试
@ContextConfiguration(value = "classpath:applicationContext-test.xml")//加载类路径下的配置文件
public class Demo {//按类型自动注入@Autowiredprivate User user;@Testpublic void run1(){user.sayHello();}
}

5.运行结果

二、全注解方式

依赖没有变,只是没有配置文件了,换成了配置类;

并且重新换了一个类Customer,没有用配置文件方式里的User类

1.编写类和方法

import org.springframework.stereotype.Component;@Component
public class Customer {public void save(){System.out.println("保存客户");}
}

2.配置类

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration//声明当前是配置类
@ComponentScan(value = "com.test.pojo") //扫描包
public class SpringConfig {}

3.测试类

import com.test.config.SpringConfig;
import com.test.pojo.Customer;
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(value = SpringJUnit4ClassRunner.class)  //运行单元测试
@ContextConfiguration(classes = SpringConfig.class)//加载配置类
public class Demo1 {@Autowired //按类型注入private Customer customer;@Testpublic void run1(){customer.save();}}

4.运行结果

http://www.lryc.cn/news/491335.html

相关文章:

  • docker-mysql
  • Java程序基础⑤Java数组的定义和使用+引用的概念
  • electron主进程和渲染进程之间的通信
  • uniapp 安卓和ios震动方法,支持息屏和后台震动,ios和安卓均通过测试
  • # DBeaver 连接hive数仓
  • STM32H7开发笔记(2)——H7外设之多路定时器中断
  • Pytorch使用手册-Build the Neural Network(专题五)
  • 16. Springboot集成Tika实现文档解析
  • 【单片机毕业设计12-基于stm32c8t6的智能称重系统设计】
  • [网络]无线通信中的AMPDU
  • [QDS]从零开始,写第一个Qt Design Studio到程序调用的项目
  • Selenium Chrome Options 总结
  • 11、PyTorch中如何进行向量微分、矩阵微分与计算雅克比行列式
  • 【软件方案】智慧城市,智慧园区,智慧校园,智慧社区,大数据平台建设方案,大数据中台综合解决方案(word原件)
  • 用js实现点击抽奖
  • Django 自定义路由转换器
  • 【JavaEE初阶】枫叶经霜艳,梅花透雪香-计算机是如何运行的?
  • 破解天然气巡检挑战,构建智能运维体系
  • go web单体项目 学习总结
  • Cocos游戏优化
  • wsl2的Ubuntu18.04安装ros和anaconda
  • 基于迅为RK3568开发板全国产平台,快速实现APP开机自启动技术分享
  • C++网络编程之多播
  • 不只是请求和响应:使用Fiddler抓包URL和Method全指南(中)
  • 学习threejs,使用设置normalMap法向量贴图创建更加细致的凹凸和褶皱
  • Hive构建日搜索引擎日志数据分析系统
  • Vue 3 defineModel: 简化组件的双向绑定
  • 【Flutter】搭建Flutter开发环境,安卓开发
  • Linux中的共享内存
  • SpringBoot中忽略实体类中的某个属性不返回给前端的方法