SSM框架中测试单元的使用 spring整合Junit过程详解

作者:BUG不报错? 时间:2022-07-01 14:46:48 

测试类中的问题和解决思路

问题

在测试类中,每个测试方法都有以下两行代码:


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

IAccountService as = ac.getBean("accountService",IAccountService.class);

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

解决思路分析

针对上述问题,我们需要的是程序能自动帮我们创建容器。一旦程序能自动为我们创建 spring 容器,我们就无须手动创建了,问题也就解决了。

我们都知道,junit 单元测试的原理(在 web 阶段课程中讲过),但显然,junit 是无法实现的,因为它自己都无法知晓我们是否使用了 spring 框架,更不用说帮我们创建 spring 容器了。不过好在,junit 给我们暴露了一个注解,可以让我们替换掉它的运行器。

这时,我们需要依靠 spring 框架,因为它提供了一个运行器,可以读取配置文件(或注解)来创建容器。我们只需要告诉它配置文件在哪就行了。

配置步骤

第一步:拷贝整合 junit的必备 jar包到 lib目录

此处需要注意的是,导入 jar 包时,需要导入一个 spring 中 aop 的 jar 包。

第二步:使用@RunWith注解替换原有运行器


/**
* 测试类
* @Version 1.0
*/ @RunWith(SpringJUnit4ClassRunner.class) public class AccountServiceTest {
}

第三步:使用@ContextConfiguration指定 spring配置文件的位置


/**
*/ @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"classpath:bean.xml"})
public class AccountServiceTest {
}

@ContextConfiguration 注解:

locations 属性:用于指定配置文件的位置。如果是类路径下,需要用 classpath:表明classes 属性:用于指定注解的类。当不使用 xml 配置时,需要用此属性指定注解类的位置。

第四步:使用@Autowired给测试类中的变量注入数据


/**
*/ @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"classpath:bean.xml"})
public class AccountServiceTest {
@Autowired
private IAccountService as ;
}

为什么不把测试类配到 xml中

在解释这个问题之前,先解除大家的疑虑,配到 XML 中能不能用呢? 答案是肯定的,没问题,可以使用。

那么为什么不采用配置到 xml 中的方式呢? 这个原因是这样的:

第一:当我们在 xml 中配置了一个 bean,spring 加载配置文件创建容器时,就会创建对象。

第二:测试类只是我们在测试功能时使用,而在项目中它并不参与程序逻辑,也不会解决需求上的问题,所以创建完了,并没有使用。那么存在容器中就会造成资源的浪费。

所以,基于以上两点,我们不应该把测试配置到 xml 文件中。

来源:https://www.cnblogs.com/blogofbin/p/11594148.html

标签:ssm,框架,测试,单元,spring,整合,junit
0
投稿

猜你喜欢

  • c++异常处理机制示例及详细讲解

    2022-04-27 11:31:27
  • Android实现图片左右滑动效果

    2022-11-30 09:30:35
  • 详解Android中接口回调、方法回调

    2021-05-25 03:32:58
  • Java源码解析之可重入锁ReentrantLock

    2021-12-28 22:32:40
  • Android开发实现圆形图片功能示例

    2023-07-12 08:43:54
  • JavaWeb开发中alias拦截器的使用方法

    2023-08-20 10:36:55
  • Android处理图像数据转换的各种方法

    2023-07-10 10:58:50
  • Android音频开发之音频采集的实现示例

    2022-04-12 16:28:31
  • C# Winform 调用系统接口操作 INI 配置文件的代码

    2023-03-04 11:49:54
  • Android自定view画圆效果

    2021-06-05 21:45:52
  • SpringBoot2.3新特性优雅停机详解

    2023-11-28 07:59:43
  • Java实现数组反转翻转的方法实例

    2021-09-19 00:21:26
  • android解析JSON数据

    2022-10-17 04:55:40
  • java线程池ThreadPoolExecutor类使用小结

    2021-09-10 16:22:05
  • 深入探究如何使用Java编写MapReduce程序

    2022-10-17 18:40:04
  • Android中系统自带锁WalkLock与KeyguardLock用法实例详解

    2023-11-26 01:50:49
  • 手动编译C#代码的方法

    2021-05-27 05:42:40
  • JavaWeb入门:HttpResponse和HttpRequest详解

    2022-09-05 16:44:31
  • Spark Streaming算子开发实例

    2023-03-17 02:28:41
  • springboot自动配置原理解析

    2021-06-01 17:54:33
  • asp之家 软件编程 m.aspxhome.com