单元测试中用@Autowired 报null (空指针异常)

本文探讨了如何在单元测试中使用@Autowired注解时遇到的空指针异常,并提供了解决方案和参考链接,帮助开发者避免此类问题。
package jnpf.task; import jnpf.entity.EquipmentparameterEntity; import jnpf.entity.UleabnormalrecordsEntity; import jnpf.myutils.DateUtils; import jnpf.service.EquipmentparameterService; import jnpf.service.RealDataService; import jnpf.service.UleabnormalrecordsService; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @Slf4j @Component public class HAHFAnalysisTask { private static Logger logger = LoggerFactory.getLogger(HAHFAnalysisTask.class); @Autowired private EquipmentparameterService equipmentparameterService; @Autowired private UleabnormalrecordsService uleabnormalrecordsService; @Autowired private RealDataService realDataService; /** * TSP高频高幅分析(小时级定时任务) */ //@XxlJob("hahfAnalysis") public void hahfAnalysis(){ //获取TSP设备列表 List<EquipmentparameterEntity> equipmentparameterEntities = equipmentparameterService.geHAHFList(); //获取日常值、远超日常值、限制 Map para = new HashMap(); List<String> tagss = equipmentparameterEntities.stream() .map(EquipmentparameterEntity::getTag) .collect(Collectors.toList()); para.put("tags", tagss); para.put("begindate", DateUtils.dataTimeformat(new Date())); List<Map> Dailyvaluemaps = realDataService.selectLastmonthDailyvalue(para); //获取小时数据(前一天开始至当前) para.put("begindate", this.timeCalculation()); para.put("enddate", DateUtils.dataTimeformat(new Date())); List<Map> hourdatamaps = realDataService.selectHourdataByTagIdsAndDate(para); //查找高频高幅警中记录 List<UleabnormalrecordsEntity> onhahfList = uleabnormalrecordsService.getOnhahfList(); //无警中记录,根据日常值、限制值及小时数据,分析是否存在,存在生成记录;有警中记录,根据警开始时间重新获取小时数据,向后分析,是否恢复补全。 for (EquipmentparameterEntity equipmentparameterEntity : equipmentparameterEntities) { //记录列表为空或记录列表中没有该条参数编码记录 if(null==onhahfList||onhahfList.stream().filter(m->m.getParacode().equals(equipmentparameterEntity.getEncode())) .collect(Collectors.toList()).size()<=0){ //赛选 List<Map> datag = Dailyvaluemaps.stream() .filter(map -> map.get("datag").equals(equipmentparameterEntity.getTag())) .collect(Collectors.toList()); List<Map<String, Object>> filteredList = hourdatamaps.stream() .filter(map -> equipmentparameterEntity.getTag().equals(map.get("datag"))) .collect(Collectors.toList()); } //该参数编码有高幅高频警中记录 else{ } } } /** * 获取字符串类型前一天开始时间 * @return */ String timeCalculation(){ // 获取当前日期并减去1天 LocalDate yesterday = LocalDate.now().minusDays(1); // 构造前一天的开始时间(00:00:00) LocalDateTime startOfYesterday = yesterday.atStartOfDay(); // 定义格式(按需修改格式字符串) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 转换为字符串 String result = startOfYesterday.format(formatter); return result; } boolean preliminaryAnalysis(){ return false; } } 其中Dailyvaluemaps 数据格式为{ “datag”: datag, “month”: 月份, “farbeyondvalue”: 远高于日常值, “limitingvalue”: 高限值, “dailyvalue”: 日常值 };hourdatamaps 数据格式为[ { “datag”: “DA-LT-4BT0005”, “maxdata”: 309.5, “datadt”: 数据时间, “mindata”: 303.25, “avgdata”: 均值 }, { “datag”: “DA-LT-4BT0005”, “maxdata”: 309.25, “datadt”: “2025-08-08 10”, “mindata”: 293.375, “avgdata”: 301.0207 } ],分析每个tag数值,当每6个小时至少有一次小时均值远高于日常值(farbeyondvalue),并持续1天以上,且实测小时浓度大于或等于limitingvalue值时,生成该段时间警,包括tag、开始时间、结束时间,为结束的结束时间为空。系统wieldspringboot中实现,不是flink。
最新发布
08-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值