今天来讲讲Spring整合junit的使用

我们在编写完Spring的代码后,往往需要测试代码的正确性,这个时候就需要用到单元测试了。我们这里使用的版本是junit4.

一个程序的入口是main方法,但是junit中不存在main方法,是因为junit内部的原理是它自己内部就有个main方法,运行扫描带@Test注解的方法,然后反射调用该方法,完成测试。

调用Spring框架的测试代码:

@Testpublic void function(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");AccountDao accountDao1 = applicationContext.getBean("AccountDao", AccountDao.class);accountDao1.findAll();}

我们发现这只是查询,还有增删改方法没有测试,但是这几个测试都有重复代码块,我们应该把它们抽取出来

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");AccountDao accountDao1 = applicationContext.getBean("AccountDao", AccountDao.class);

我们可以在外面定义一个全局变量,用来存储accountDao的值,并且通过@Autowired注解实现注入对象,这样每个方法就都可以使用它了.

@Autowired
private AccountDao accountDao;

但是这样运行之后会爆出空指针异常!!!

这是因为Junit默认是不认识Spring框架的,所以它内部没有IOC容器,这样就算你有@Autowired这个注解,它也不知道从哪里注入数据,所以就会有这个异常。

问题原因分析出来后,我们就想,能不能自己提供一个IOC容器呢,即

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");

测试是两个职位,上述代码如果是开发编写的话,往往没什么问题。但测试人员可能会不懂Spring的代码,所以需要另外一种办法,好在Spring为我们提供了整合Junit的使用。

1.首先引入Spring-test的jar坐标

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.5.RELEASE</version> <scope>test</scope> </dependency>

2.Spring给我们提供了一个main方法,这个main方法支持Spring框架,我们用这个main替换Junit的main方法。

@RunWith(SpringJUnit4ClassRunner.class)

在类上加上这个注解,@Runwith代表要替换的运行器,后面在字节码参数

3.告诉Spring配置文件/配置类的位置

@ContextConfiguration(locations = "classpath:bean.xml")

使用Contextfiguration注解可以完成该功能,locations表示配置文件的位置,加上classpath表示类路径。

至此整合结束,测试方法直接使用既可,但是这里有个版本问题,如果你使用的是Spring5.0以上的话,你的Junit版本必须是4.12以上!!!

不然会曝出

java.lang.ExceptionInInitializerError

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

这个错误

最近疫情比较严重,希望大家注意身体哦。

junit 测试似有方法_Spring整合Junit的使用相关推荐

  1. junit 测试似有方法_JUnit测试私有方法(protected方法类同)

    注意到,我们在之前被测试的方法都是共有的...其实就算是protected修饰的方法我们也可以通过在同一个包下面建测试类来测试的.但是,现 在我们有一个需求,就是要测试私有的方法....按照我们之前的 ...

  2. junit测试起名字规则_如何在JUnit 5中替换规则

    junit测试起名字规则 最近发布的JUnit 5(又名JUnit Lambda) alpha发行版引起了我的兴趣,在浏览文档时,我注意到规则以及运行程序和类规则都消失了. 根据文档,这些部分竞争的概 ...

  3. maven junit测试_使用Maven Failsafe和JUnit @Category将集成测试与单元测试分开

    maven junit测试 为什么单元测试应与集成测试分开运行 单元测试级别的TDD相当简单,因为单元测试中的类要么没有复杂的依赖关系,要么使用模拟框架(例如Mockito)来模拟依赖关系. 但是,当 ...

  4. 08-spring整合 junit

    目录 一.spring整合 junit 问题解析 二.Spring 整合 junit 的配置 1.加入架包 2.@Runwith 3.@ContextConfiguration 一.spring整合 ...

  5. spring整合junit问题分析

    spring整合Junit分析 1.应用程序的入口     main方法 2.junit单元测试中,没有main方法也能执行     junit集成了一个main方法     该方法就会判断当前测试类 ...

  6. Spring 整合junit

    junit需要是4.12版本以上 <dependency><groupId>org.springframework</groupId><artifactId& ...

  7. Android JUnit测试说明和实例演示

    什么是 JUnit ? JUnit是采用测试驱动开发的方式,也就是说在开发前先写好测试代码,主要用来说明被测试的代码会被如何使用,错误处理等:然后开始写代码,并在测试代码中逐步测试这些代码,直到最后在 ...

  8. SpringBoot中使用Junit测试

    文章目录 SpringBoot整合Junit测试 目录 1.SpringBoot引入springboot的测试依赖 2.生成测试方法 3.测试结果 SpringBoot整合Junit测试 假设已对my ...

  9. Maven项目之运用Junit测试

    JUnit测试 注解:已经下载了JUnit依赖包 创建 Maven 项目,编写两个数的加.减.乘和除函数,以及求 n!函数,利用Junit 单元测试测试编写的五个方法函数. //Triangle类放在 ...

最新文章

  1. 单引号oracle如何转义_如何在Oracle中预测和转义单引号'
  2. php 选择路径上传方法,PHP上传文件时自动分配路径的方法,_PHP教程
  3. mciSendString用法
  4. [html] html哪个标签属性可以通过预解析DNS?
  5. 远程ykvm 插件移值java_Centos7 命令行下kvm安装windows,linux
  6. C++ 重载new和delete运算符
  7. 周口a货翡翠,泸州a货翡翠
  8. 操作系统和Linux
  9. ios 网络状态获取_Network Kit X——网络检测工具箱
  10. Spring源码分析之doDispatch分发请求逻辑
  11. Java 内存模型(Java Memory Model,JMM)
  12. 不确定性原理的前世今生 · 数学篇(二)
  13. java程序员面试真题及详解2017(纯手动)
  14. 计算机科学与技术的学士服是什么颜色的,学士服颜色分类 各色学士服都有什么讲究...
  15. sinx泰勒展开_求极限:泰勒公式应展开到第几阶?
  16. 苹果服务器装系统教程视频教程,苹果“雪豹”服务器系统安装傻瓜教程(多图)...
  17. Springboot-JAVA实现组织树形结构
  18. 员工拿计件工资,一旦工资挣高了,老板就调低工价,这样的老板你遇到过吗,怎么应对?
  19. 智能穿戴新方向华米科技血压手表相当于A类血压计申请标准
  20. hibernate date mysql 时间段查询

热门文章

  1. 学习能力和工作态度是准绳
  2. 把javascript中的json对象传到action的list里的方法
  3. Selenium - CSS Selector
  4. Linux运维常用命令总结
  5. 8月第一周国内搜索网站 排名顺序基本稳定
  6. 3.1 Android组件intent filter
  7. 基于Tomcat5.0和Axis2开发Web Service应用实例
  8. C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
  9. 利用Jenkins实现JavaWeb项目的自动化部署
  10. Spring中BeanPostProcessor