Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架

简介: 这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。

1、Spring5 框架核心容器支持@Nullable 注解

@Nullable 注解可以使用在方法上面,属性上面,参数上面,表示方法返回可以为空,属性值可以为空,参数值可以为空

1、注解用在方法上面,方法返回值可以为空
在这里插入图片描述

2、注解使用在方法参数里面,方法参数可以为空

在这里插入图片描述
3、注解使用在属性上面,属性值可以为空
在这里插入图片描述

2、Spring5 核心容器支持函数式风格 GenericApplicationContext

函数式风格创建对象,交给 spring 进行管理。创建对象的时候可以通过自定义名称、也可以直接根据类的全路径

//第一种方式创建对象
    @Test
    public void testGenericApplicationContext(){
//        1、创建GenericApplicationContext对象
        GenericApplicationContext context = new GenericApplicationContext();
//        2、调用context的方法对象注册
        context.refresh();
        context.registerBean("myDog", Dog.class,()-> new Dog());
//        3、获取在spring注册的对象
        Dog myDog = (Dog)context.getBean("myDog");
        System.out.println(myDog);

//第二种方式创建对象
        /*
        context.registerBean( Dog.class,()-> new Dog());
        Dog myDog = (Dog)context.getBean("com.zyz.spring5.entity.Dog");
        System.out.println(myDog);
        */
    }

在这里插入图片描述

1、自定义名称

在这里插入图片描述
2、根据类路径
在这里插入图片描述

3、Spring5 支持整合 JUnit5

3.1 整合 JUnit4

1、 引入 Spring 相关针对测试依赖
在这里插入图片描述
在这里插入图片描述
2、创建测试类,使用注解方式完成

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/10/29 13:14
 */
@RunWith(SpringJUnit4ClassRunner.class)//单元测试框架
@ContextConfiguration("classpath:bean.xml")//加载配置文件

public class JTest4 {

    @Autowired
    private UserService userService;

    @Test
    public void testDemo1(){
        userService.accountMoney();
    }
}

3.2 整合 JUnit5

1、引入 JUnit5 的 jar 包
在这里插入图片描述
在这里插入图片描述
2、 创建测试类,使用注解完成

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/10/29 15:27
 */
@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:bean.xml")
public class JTest5 {

    @Autowired
    private UserService userService;

    @Test
    public void test(){
        userService.accountMoney();

    }
}

3、使用一个复合注解替代上面两个注解完成整合

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/10/29 15:27
 */
@SpringJUnitConfig(locations = "classpath:bean.xml")
public class JTest5 {

    @Autowired
    private UserService userService;

    @Test
    public void test(){
        userService.accountMoney();

    }
}

4、后语

如果xml文件和配置类同时存在,则会加载两次。会报错、删除配置类就好了。但是通过读取配置类进行测试、又不会出错(xml文件也存在的情况)。目前不清楚原因???????

学无止境。。。。。。

相关文章
|
5月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
Spring Boot 3.x 微服务架构实战指南
|
5月前
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
5月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
9月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
991 0
|
5月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
1036 3
|
12月前
|
Java 测试技术 Android开发
课时148:junit测试工具
课时148介绍了JUnit测试工具的使用,包括定义、配置和编写测试程序。JUnit是流行的用例测试工具,用于确保代码稳定性。
253 0
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
278 5
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
316 6
|
测试技术
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
438 2