Spring整合JUnit

Spring整合JUnit

JUnit的概述

JUnit是一个Java语言的单元测试框架。它广泛用于Java开发者编写和执行自动化的单元测试,以确保代码的质量和正确性。

JUnit的核心概念

  • 测试用例(Test Case)
一个测试用例是一个完整的测试单元,它检查特定条件或行为。在JUnit中,测试用例通常是一个方法,使用注解@Test标记。
  • 测试套件(Test Suite)
测试套件是一组测试用例或其他的测试套件的集合。在JUnit中,可以使用@Runwith@Suite.SuiteClasses注解来定义测试套件。
  • 断言(Assertion)
断言用于验证期望值与实际值是否相等。JUnit提供了一系列的断言方法,如assertEquals()、assertTrue()等。
  • 注解(Annoation)
JUnit使用注解来标记测试方法、测试套件、测试前的设置和测试后的清理等。常见的注解如@Test@Before@After@BeforeClass@AfterClass等。

JUnit的常用注解

注解 说明
@Test 标记一个方法为测试方法
@Before 标记一个方法,它会在每个测试方法执行之前执行
@After 标记一个方法,它会在每个测试方法执行之后执行
@BeforeClass 标记一个静态方法,它会在所有测试方法执行之前执行一次
@AfterClass 标记一个静态方法,他会在所有测试方法执行之后执行一次
@Ignore 标记一个测试方法或测试类被忽略,不会执行

JUnit的基本使用

  1. 添加JUnit的依赖
  2. 编写测试类
  3. 执行测试

JUnit的版本履历

  • JUnit3(1998年发布):基础版本,简单但耦合度高
  • JUnit4(2006年发布):引入注解,简化测试代码,广泛使用但缺乏现代Java特性支持。
  • JUnit5(2017年发布):现代化版本,支持新特性,模块化和可扩展性更好,兼容旧版本。

Spring整合JUnit5

引入相关依赖

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

添加配置文件

<?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.shen.junit"></context:component-scan>

</beans>

一个注册到容器的实体类

/**
 * 用户实体类
 */
@Component
public class User {
    public void printHello() {
        System.out.println("hello");
    }
}

测试类

由于与Spring集成,测试类的user属性可以依赖注入

//另一种方式
//@ExtendWith(SpringExtension.class)
//@ContextConfiguration("classpath:bean.xml")

//第一种方式推荐
@SpringJUnitConfig(locations = "classpath:bean.xml")
public class SpringTestJunit5 {

    private final User user;

    @Autowired
    public SpringTestJunit5(User user) {
        this.user = user;
    }

    @Test
    public void testUser() {
        user.printHello();
    }
}

Spring整合JUnit4

由于实体类、配置文件与整合JUnit5一致,这里只展示引入依赖和测试类

引入相关依赖

    <dependencies>
        <!--spring context依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.11</version>
        </dependency>    
        <!--spring对junit的支持相关依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.11</version>
        </dependency>
        <!-- junit4测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:bean.xml")
public class SpringTestJunit4 {
    @Autowired
    private User user;

    @Test
    public void testUser() {
        user.printHello();
    }
}

参考资料

https://junit.org/junit5/

posted @   柯南。道尔  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示