Spring对JUnit的支持

这篇具有很好参考价值的文章主要介绍了Spring对JUnit的支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

junit4

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.powernode</groupId>
    <artifactId>spring6-junit</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    

    <dependencies>
        <!--spring context依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.0-M2</version>
        </dependency>
        <!--spring对junit的支持相关依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.0-M2</version>
        </dependency>
        <!--junit4依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

</project>

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.powernode.spring6.bean"/>
</beans>

单元测试:

package com.spring6.test;

import com.powernode.spring6.bean.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJUnit4Test {

    @Autowired
    private User user;

    @Test
    public void testUser(){
        System.out.println(user.getName());
    }
}

Spring提供的几个注解:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")

在单元测试类上使用这两个注解之后,在单元测试类中的属性上可以使用@Autowired。比较方便。

@ContextConfiguration("classpath:spring.xml") 

代替 

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

 

在 Spring 中,`@RunWith(SpringJUnit4ClassRunner.class)` 注解的作用是告诉 JUnit 使用 Spring 提供的测试运行器来执行测试方法。

SpringJUnit4ClassRunner 是 JUnit 的一个扩展类,它提供了对 Spring TestContext Framework 的集成支持。使用这个运行器,可以方便地在测试方法中使用 Spring 的功能,如自动注入依赖、加载 Spring 配置文件、创建 Spring 容器等。

具体来说,`@RunWith(SpringJUnit4ClassRunner.class)` 的作用包括:

1. 在测试类中创建 Spring 的应用上下文(ApplicationContext)。
2. 自动将测试类中的依赖注入(Dependency Injection)到被测试的对象中。
3. 执行测试方法前后,执行 Spring 的相关初始化和销毁操作。
4. 提供了访问 Spring 上下文和相关功能的便捷方法,如获取 Bean、执行事务等。

通过使用 `@RunWith(SpringJUnit4ClassRunner.class)` 注解,可以让测试类与 Spring 进行集成,使得测试过程中能够充分利用 Spring 提供的依赖注入和其他功能,方便进行单元测试和集成测试。

 文章来源地址https://www.toymoban.com/news/detail-478315.html

 

JUnit5

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.powernode</groupId>
    <artifactId>spring6-015-junit</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    

    <dependencies>
        <!--spring context依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.0-M2</version>
        </dependency>
        <!--spring对junit的支持相关依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.0-M2</version>
        </dependency>
        <!--junit5依赖-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.9.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

</project>
package com.spring6.test;

import com.powernode.spring6.bean.User;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;


@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJUnit5Test {

    @Autowired
    private User user;

    @Test
    public void testUser(){
        System.out.println(user.getName());
    }
}

 

`@RunWith(SpringJUnit4ClassRunner.class)` 和 `@ExtendWith(SpringExtension.class)` 都是用于在测试中将 Spring TestContext Framework 集成到 JUnit 中,实现与 Spring 的整合。它们的作用有以下区别:

1. JUnit 版本:`@RunWith(SpringJUnit4ClassRunner.class)` 是针对 JUnit 4.x 的注解,而 `@ExtendWith(SpringExtension.class)` 是针对 JUnit 5.x 的注解。因此,选择注解的依据是所使用的 JUnit 版本。

2. 注解类型:`@RunWith(SpringJUnit4ClassRunner.class)` 是使用 JUnit 的运行器(Runner)模型进行扩展,而 `@ExtendWith(SpringExtension.class)` 是使用 JUnit 5 的扩展模型进行扩展。JUnit 5 的扩展模型提供了更灵活的扩展机制,并与 Java 8+ 的新特性更好地集成。

3. 导入依赖:使用 `@RunWith(SpringJUnit4ClassRunner.class)` 需要导入 JUnit 4.x 和 Spring Test 相关的依赖,而使用 `@ExtendWith(SpringExtension.class)` 需要导入 JUnit 5.x 和 Spring Test 相关的依赖。根据所使用的 JUnit 版本选择相应的依赖。

总的来说,选择使用 `@RunWith(SpringJUnit4ClassRunner.class)` 还是 `@ExtendWith(SpringExtension.class)` 取决于所使用的 JUnit 版本。在使用 JUnit 5.x 的情况下,建议使用 `@ExtendWith(SpringExtension.class)` 注解来实现 Spring 的整合。

 

到了这里,关于Spring对JUnit的支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA使用Junit4进行单元测试

            单元测试不仅能帮我们验证代码逻辑,还可以通过执行时间进行快速筛选不合格代码并进行优化。核心模块的代码的单元测试覆盖率要达到100%,其他模块代码的单元测试覆盖率需要达到60%。下面将介绍在IDEA上使用Junit4进行单元测试的方法: 一、安装JunitGenerator2插件

    2023年04月16日
    浏览(40)
  • 浅谈java单元测试框架junit4/5

    junit是一个开源的Java语言的单元测试框架。目前junit主要有版本junit3,junit4和junit5。因在junit3中,是通过对测试类和测试方法的命名来确定是否是测试,且所有的测试类必须继承junit的测试基类TestCase,所以本文不再讨论junit3,只讨论使用比较多的junit4和junit5。 提供注解标识测

    2024年02月03日
    浏览(38)
  • Junit4 + Mockito进行单元测试实战案例

    ​ 实战代码案例: ​​​​​​​​​​​ 注意:idea2021.3.3之前的版本都搜索不到这个插件。 使用TestMe自动生成单元测试代码: 不是自动化执行的单元测试都是无意义的,项目中那么多单测,难道一个一个点吗? 引入maven-surefire-plugin插件用于自动化执行单测。 include里表

    2024年02月16日
    浏览(52)
  • Java高级技术 单元测试(JUnit4)

    所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试。 我们之前一直使用的测试便是通过main方法来实现,但在main方法中写测试代码有如下的几个问题存在: 只能在main方法编写测试代码,去调用其他方法进行测试。 无法实现自动化测试,一个方法测

    2024年02月03日
    浏览(47)
  • Spring对JUnit的支持

    junit4 pom.xml spring.xml 单元测试: Spring提供的几个注解: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(\\\"classpath:spring.xml\\\") 在单元测试类上使用这两个注解之后,在单元测试类中的属性上可以使用@Autowired。比较方便。 @ContextConfiguration(\\\"classpath:spring.xml\\\")  代替  ApplicationContext

    2024年02月08日
    浏览(10)
  • 在Idea中使用Junit4进行单元测试

    #初学者,为了对知识进行巩固写这个文章,有问题欢迎指出,欢迎讨论 在Setting - Plugins - Marketplace中搜索JUnit,点击Apply后重启Idea 创建的类和文件夹 按照这个顺序就可以啦 点击OK后,在我们的Test文件夹中就出现了一个测试文件

    2024年02月03日
    浏览(50)
  • Junit4 一直处于运行中的排查过程

    新买了一个Macbook Pro . 之前的工程搬家过来, 这天要跑个单元测试。 发现Junit4 一直处于运行中。没有错误信息,没有用例执行结果。遂开始排查原因。 这里插一句,苹果芯片的Mbp还是很好用的,除了性能够用之外,最主要是安静+不热。 这对比我之前的i7版本的真是太明显了

    2024年02月11日
    浏览(39)
  • Tests run: 0, Failures: 0, Errors: 0, Skipped: 0【Junit4 升级 Junit5】【Maven 检测不到单元测试问题】

    由于测试容器,有残留的 JUnit4 依赖项。能够通过显式将 JUnit5 设置为万无一失插件的依赖项来解决此问题,如下所示:

    2024年04月27日
    浏览(38)
  • 基于Junit4+Mockito+PowerMock实现Controller+Service的单元测试

    一 导入的依赖 二 依赖版本 三 controller测试示例代码       controller         controllerTest         测试结果:覆盖率100%         带异常的Controller         带异常提示的ControllerTest         测试结果,覆盖率100%   三 service测试示例代码         service         serviceTest    

    2024年02月14日
    浏览(43)
  • pytest生成 junit-xml 测试报告

    pytest 生成junit-xml 测试报告,那么生成的xml报告有什么用呢?可以集合一些持续集成工具(如jenkins…等)方便查看报告。 命令行参数有2个跟 junit-xml 报告相关的参数   --junit-xml=path      create junit-xml style report file at given path.   --junit-prefix=str    prepend prefix to classnames in junit

    2024年02月10日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包