Spring整合junit

基础

  1. 应用程序的入口

    main方法

  2. junit单元测试中,没有main方法也能执行

    junit集成了一个main方法
    该方法就会判断当前测试类中哪些方法有 @Test注解
    junit就让有Test注解的方法执行

  3. junit不会管我们是否采用spring框架

    在执行测试方法时,junit根本不知道我们是不是使用了spring框架
    所以也就不会为我们读取配置文件/配置类创建spring核心容器

  4. 由以上三点可知

    当测试方法执行时,没有Ioc容器,就算写了Autowired注解,也无法实现注入

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

在解释这个问题之前,先解除大家的疑虑,配到 XML 中能不能用呢?

答案是肯定的,没问题,可以使用。

那么为什么不采用配置到 xml 中的方式呢?

这个原因是这样的:
**第一:**当我们在 xml 中配置了一个 bean,spring 加载配置文件创建容器时,就会创建对象。
**第二:**测试类只是我们在测试功能时使用,而在项目中它并不参与程序逻辑,也不会解决需求上的问题,所以创建完了,并没有使用。那么存在容器中就会造成资源的浪费。

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

整合

Spring整合junit的配置:

  1. 导入spring整合junit的jar(坐标)
  2. 使用Junit提供的一个注解把原有的main方法替换了,替换成spring提供的@Runwith
  3. 告知spring的运行器,spring和ioc创建是基于xml还是注解的,并且说明位置
    @ContextConfiguration
    - locations 属性:用于指定配置文件的位置。如果是类路径下,需要用 classpath:表明
    - classes 属性:用于指定注解的类。当不使用 xml 配置时,需要用此属性指定注解类的位置。

第一步:在pom.xml中加入:

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>5.3.2</version>
</dependency>

使用xml配置:

/**
* 测试类
* @author 栗子
* @Company 
* @Version 1.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"classpath:bean.xml"})
public class AccountServiceTest {
@Autowired
private IAccountService as ; }

使用注解:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)  // 告诉它使用了注解还是xml
public class AccountTest {

    @Autowired
    private AccountService as; }

当我们使用spring 5.x版本的时候,要求junit的jar必须是4.12及以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值