SpringRunner和SpringJUnit4ClassRunner区别介绍、示例代码

18 篇文章 0 订阅

概述

SpringRunnerSpringJUnit4ClassRunner 是用于在JUnit测试中与Spring测试框架集成的两个类。它们的主要作用是帮助JUnit测试运行时加载Spring的应用上下文,并提供对Spring环境的支持。

SpringJUnit4ClassRunner

描述

  • SpringJUnit4ClassRunner 是 Spring 4.x 版本及之前版本中的测试运行器,继承自 BlockJUnit4ClassRunner
  • 它允许JUnit测试运行时加载Spring的应用上下文,使得测试可以在Spring的环境中运行。
  • 通过这个运行器,测试可以注入Spring的bean,并进行Spring环境下的集成测试。

应用场景

  • 适用于需要在JUnit 4环境中进行Spring集成测试的场景。
  • 你希望测试Spring配置、Spring容器管理的bean,或者需要在测试中使用Spring的依赖注入。

示例代码

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.junit.Test;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-config.xml"})
public class MyServiceTest {

    @Autowired
    private MyService myService;

    @Test
    public void testService() {
        myService.performAction();
        // Assertions here
    }
}

说明

  • @RunWith(SpringJUnit4ClassRunner.class) 表示JUnit将使用 SpringJUnit4ClassRunner 来运行测试。
  • @ContextConfiguration 用于指定Spring配置文件的位置或配置类。
  • @Autowired 注入Spring管理的bean。

SpringRunner

描述

  • SpringRunner 是 Spring 5.x 版本中的测试运行器,继承自 SpringJUnit4ClassRunner,并且是 SpringJUnit4ClassRunner 的一种简化和改进。
  • 它是JUnit 4的一个扩展,为了与JUnit 5兼容,Spring 5.x引入了这个新的测试运行器。
  • SpringRunner 继承了 SpringJUnit4ClassRunner 的所有功能,并对其进行了改进,以支持新的特性。

应用场景

  • 适用于使用JUnit 5环境中进行Spring集成测试的场景。
  • 你希望在JUnit 5测试框架下运行Spring测试,并使用Spring的功能,如自动注入bean。

示例代码

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.beans.factory.annotation.Autowired;

@ExtendWith(SpringExtension.class)
@ContextConfiguration(locations = {"classpath:spring-config.xml"})
public class MyServiceTest {

    @Autowired
    private MyService myService;

    @Test
    public void testService() {
        myService.performAction();
        // Assertions here
    }
}

说明

  • @ExtendWith(SpringExtension.class) 是JUnit 5的注解,类似于JUnit 4中的 @RunWith,表示JUnit将使用 SpringExtension 来支持Spring测试功能。
  • @ContextConfiguration 用于指定Spring配置文件的位置或配置类。
  • @Autowired 注入Spring管理的bean。

区别总结

  1. JUnit版本支持

    • SpringJUnit4ClassRunner:用于JUnit 4环境。
    • SpringRunner(实际上就是 SpringExtension):用于JUnit 5环境。
  2. 继承关系

    • SpringJUnit4ClassRunner:继承自 BlockJUnit4ClassRunner
    • SpringRunner:继承自 SpringExtension(JUnit 5的扩展机制)。
  3. 测试框架集成

    • SpringJUnit4ClassRunner:与JUnit 4兼容。
    • SpringRunner:与JUnit 5兼容,支持JUnit 5的新特性,如扩展模型和新断言功能。
  4. 使用方式

    • JUnit 4:使用 @RunWith(SpringJUnit4ClassRunner.class)
    • JUnit 5:使用 @ExtendWith(SpringExtension.class)

选择适当的测试运行器

  • 如果你使用JUnit 4,使用 SpringJUnit4ClassRunner
  • 如果你使用JUnit 5,使用 SpringRunner(即 SpringExtension)。

总结

SpringJUnit4ClassRunnerSpringRunner 都是为了将Spring的功能集成到JUnit测试中。选择哪个取决于你所使用的JUnit版本。如果你正在迁移到JUnit 5,使用 SpringRunner 是合适的选择;对于JUnit 4,SpringJUnit4ClassRunner 仍然是标准选择。

要搭建Spring框架集成MyBatis-Plus,首先需要使用Spring Boot框架作为基础,因为Spring Cloud离不开Spring Boot的基础。掌握在Spring Boot上集成MyBatis-Plus是一个很重要的技能。 以下是一个完整的示例代码,演示了如何在Spring Boot中集成MyBatis-Plus: 1. 创建一个启动类,使用@SpringBootApplication注解,并使用@MapperScan指定Mapper接口的扫描路径。该类的代码如下: ```java @SpringBootApplication @MapperScan("com.qf.mapper") public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } } ``` 2. 创建一个Mapper接口,例如UserMapper,使用MyBatis-Plus提供的通用Mapper接口,并定义相关的SQL操作。示例代码如下: ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qf.entity.User; public interface UserMapper extends BaseMapper<User> { // 自定义SQL操作 // ... } ``` 3. 创建一个测试类,使用@SpringBottTest注解,并使用@Autowired注入UserMapper,通过调用UserMapper的方法来操作数据库。示例代码如下: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.qf.entity.User; import com.qf.mapper.UserMapper; @RunWith(SpringRunner.class) @SpringBootTest public class TestMybatisSpringBoot { @Autowired private UserMapper userMapper; @Test public void testSelectList() { List<User> users = this.userMapper.selectList(null); for (User user : users) { System.out.println(user); } } } ``` 通过以上步骤,就可以搭建一个基于Spring Boot的MyBatis-Plus项目,并且实现基本的数据库操作。在启动类中,使用@MapperScan注解指定Mapper接口的扫描路径,让Spring Boot能够自动加载这些Mapper接口。同时,在测试类中,使用@Autowired注入UserMapper,并通过调用UserMapper的方法来操作数据库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot集成mybatis-plus的demo基础搭建](https://download.csdn.net/download/zh_chong/83169592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring-mybatis-plus 整合spring](https://blog.csdn.net/m0_71255572/article/details/125695308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值