spring整合Junit

本文介绍了如何通过Spring集成JUnit避免频繁获取Bean,提供了一种方法,即在测试类中注入Spring容器,使得测试更便捷。重点讲解了@RunWith(SpringJUnit4ClassRunner)和@ContextConfiguration的使用,以及解决jar包版本冲突的问题。

使用了spring的容器来管理Bean之后, 测试时我们发现每一次都要去获取app对象, 用app对象再去获取bean对象, 是比较麻烦的

也就是测试类的每一个测试方法都要写获取测试对象的代码

spring的设计者也发现了这一点, 所以spring中集成了junit.

上述问题的解决方法:
让每个测试类都有拥有spring容器, 测试对象就可以作为属性注入进测试类, 以供测试类中的测试方法使用。让springJunit负责创建spring容器,只需要将spring的核心配置文件告诉springJunit,
在这里插入图片描述

第一步:
在项目中导入junit的坐标和spring集成junit的坐标

	<dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>4.11</version>
	      <scope>test</scope>
    </dependency>
    <dependency>
          <!--spring集成junit的jar包-->
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>5.0.5.RELEASE</version>
      </dependency>

spring集成的这个junit可以十分方便的测试所有在容器中的bean实例
首先认识两个注解
一个是RunWith
一个叫ContextConfiguration
在这里插入图片描述

代码实例

@RunWith(SpringJUnit4ClassRunner.class)  //表示方法不再直接使用junit包了, 而是使用spring集成的junit
@ContextConfiguration(classes = {SpringConfiguration.class})  //加载核心配置类
public class SpringJunitTest {

    //十分方便的
    //需要测试哪一个bean就作为属性, 配合spring的注解注入容器中的bean

    @Autowired
    @Qualifier("userDaoMysql")
    private UserDao userDao1;

    @Autowired
    @Qualifier("userDaoOrale")
    private UserDao userDao2;

    @Autowired
    private UserService userService;

    @Autowired
    private DataSource dataSource;

    @Test
    public void testSpringBean() throws Exception{
        userDao1.getUser();
        userDao2.getUser();
        userService.save();

        System.out.println(dataSource.getConnection());
    }

}
这是Mysql的实现方法
这是Orale的实现方法
这是Orale的实现方法
调用了持久层的方法
1216, 2021 5:46:23 下午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
com.mysql.jdbc.JDBC4Connection@5c44c582

注意点:
java.lang.ExceptionInInitializerError
这个异常的原因是, 由于jar包版本冲突导致的
也即是spring-test5.0.5对应junit4.12才对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值