Day23_学点儿IDEA_单元测试@Test在新module项目中失效、Jackson核心对象 ObjectMapper识别不到

本文介绍了在IntelliJIDEA2023.2.4中遇到的JavaSE项目单元测试不起作用、Jackson包识别问题以及全局、项目和模块级别的依赖库区别。提供了针对这些问题的解决方法,包括配置单元测试环境和调整library依赖范围。
摘要由CSDN通过智能技术生成

版本

IntelliJ IDEA 2023.2.4

目录结构

Study(Project)
├──JavaSE(Module)
│  └──xxxx
└──JavaWeb(Module)
   └──xxxx

在这里插入图片描述

问题

1.1 在JavaSE项目中正常可以用的单元测试@Test,到了JavaWeb项目中不起作用了

在这里插入图片描述

1.2 解决方法

如果是新创建的项目,先在以下位置添加一句-Deditable.java.test.console=true
在这里插入图片描述
然后光标移到@Test附近,Alt+Enter(快速修复一些错误的快捷键)将JUnit4添加到依赖即可,Ctrl+Alt+Shift+S可以快速打开项目结构查看结果。
在这里插入图片描述

2.1 Jackson包导入到WEB-INF/lib识别不到

在这里插入图片描述
在这里插入图片描述

2.2 解决方法

导致这个问题的原因其实是没有把WEB-INF/lib添加到依赖(Add as Library操作),因为之前mysql的jar包不加也行,我推测的原因是当需要使用JDBC相关代码、类的时候,Tomcat 9.0.87会自己去这个目录下找包(IDEAJavaWeb项目下在WEB-INF添加jar包导致Tomcat无法启动的问题解决记录)。
所以现在我们本地测试需要导入包的代码、类时,本地不会自己去WEB-INF/lib下找包,所以就会报红。
所以只需要把WEB-INF/lib添加到依赖即可
在这里插入图片描述

3 Global、Project和Module区别

其实就是作为Library的**可见范围(可重复使用的范围)**不一样:Global>Project>Module
顾名思义
Global:所有IDEA中的Project项目、Module项目都能找到这个路径中的相关包作为依赖
Project:只有当前Project项目及其中的Module项目能找到这个路径中的相关包作为依赖
Module:只有当前Module项目能找到这个路径中的相关包作为依赖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改一下这几个lib的名字,添加时就知道该怎么选了
在这里插入图片描述
在这里插入图片描述

参考

Idea中使用@Test

在Spring Boot 2.6.13,`Jackson2JsonRedisSerializer`的`setObjectMapper()`方法不再生效。这是因为在这个版本的Spring Boot,Redis的默认序列化器已经从`Jackson2JsonRedisSerializer`更改为`LettuceConnectionFactory`。 要解决这个问题,你可以使用`LettuceConnectionFactory`来配置自定义的序列化器。以下是一个示例: ```java @Configuration public class RedisConfig { @Bean public LettuceConnectionFactory redisConnectionFactory() { LettuceConnectionFactory factory = new LettuceConnectionFactory(); factory.setHostName("localhost"); factory.setPort(6379); factory.setDatabase(0); // 配置自定义的序列化器 RedisSerializationContext.SerializationPair<Object> serializationPair = RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer()); RedisSerializationContext<Object, Object> serializationContext = RedisSerializationContext.newSerializationContext().key(serializationPair).value(serializationPair).build(); factory.setKeySerializer(new StringRedisSerializer()); factory.setValueSerializer(redisSerializer()); factory.setHashKeySerializer(new StringRedisSerializer()); factory.setHashValueSerializer(redisSerializer()); return factory; } private RedisSerializer<Object> redisSerializer() { // 使用Jackson2JsonRedisSerializer作为自定义的序列化器 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); return new Jackson2JsonRedisSerializer<>(Object.class); } } ``` 在上述示例,我们使用`LettuceConnectionFactory`来配置Redis连接工厂,并通过`setKeySerializer()`、`setValueSerializer()`、`setHashKeySerializer()`和`setHashValueSerializer()`方法设置自定义的序列化器。 请确保你将以上的配置类正确注入到Spring Boot应用程序,这样就可以正确地使用自定义的序列化器了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值