From b9768aac5e92a11a513390ca2ce8a39d8cfd2eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=87=AA=E8=BE=BE?= <980324341@qq.com> Date: Thu, 10 Sep 2026 14:34:55 +0800 Subject: [PATCH] =?UTF-8?q?test(shop-data-crawl):=20=E4=BF=AE=E5=A4=8D=20S?= =?UTF-8?q?hopDataCrawlTaskServiceRetentionTest=20=E5=9B=A0=E6=9E=84?= =?UTF-8?q?=E9=80=A0=E4=BE=9D=E8=B5=96=E6=BC=8F=20mock=20=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=20NPE=E2=80=94=E2=80=94Task=2035=20=E7=BB=99?= =?UTF-8?q?=20ShopDataCrawlTaskService=20=E6=96=B0=E5=A2=9E=E4=BA=86=20sho?= =?UTF-8?q?pDataCrawlItemStoreService(=E8=A1=8C=E7=BA=A7=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=90=BD=E5=BA=93)=E4=B8=8E=20TaskProgressLightAssembler=20?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=9E=84=E9=80=A0=E4=BE=9D=E8=B5=96=EF=BC=8C?= =?UTF-8?q?=E8=80=8C=E6=9C=AC=E6=B5=8B=E8=AF=95=E7=9A=84=20@Mock=20?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9C=AA=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=EF=BC=9B@InjectMocks=20=E8=B5=B0=E6=9E=84=E9=80=A0=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E6=97=B6=E6=B2=A1=E6=9C=89=E5=AF=B9=E5=BA=94=20@Mock?= =?UTF-8?q?=20=E7=9A=84=E6=9E=84=E9=80=A0=E5=8F=82=E6=95=B0=E4=BC=9A?= =?UTF-8?q?=E8=A2=AB=E4=BC=A0=20null=EF=BC=8C=E4=BA=8E=E6=98=AF=20assemble?= =?UTF-8?q?DailyWorkbook=20=E9=87=8C=E7=9A=84=20saveShopBatchFromSnapshot?= =?UTF-8?q?=20=E8=B0=83=E7=94=A8=E7=9B=B4=E6=8E=A5=20NPE(11=20=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=202=20=E5=A4=B1=E8=B4=A5=205=20=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E8=A1=A8=E7=8E=B0=E5=90=AB'=E6=9C=9F=E6=9C=9B=20Illeg?= =?UTF-8?q?alStateException=20=E5=AE=9E=E4=B8=BA=20NullPointerException')?= =?UTF-8?q?=E3=80=82=E8=A1=A5=E4=B8=A4=E4=B8=AA=20@Mock=20=E5=90=8E=2011/1?= =?UTF-8?q?1=20=E9=80=9A=E8=BF=87=EF=BC=8C=E7=9B=B8=E5=85=B3=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=20310=20=E7=94=A8=E4=BE=8B=E5=85=A8=E7=BB=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ShopDataCrawlTaskServiceRetentionTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend-java/src/test/java/com/nanri/aiimage/modules/shopdatacrawl/service/ShopDataCrawlTaskServiceRetentionTest.java b/backend-java/src/test/java/com/nanri/aiimage/modules/shopdatacrawl/service/ShopDataCrawlTaskServiceRetentionTest.java index 06af59b6..50924e7e 100644 --- a/backend-java/src/test/java/com/nanri/aiimage/modules/shopdatacrawl/service/ShopDataCrawlTaskServiceRetentionTest.java +++ b/backend-java/src/test/java/com/nanri/aiimage/modules/shopdatacrawl/service/ShopDataCrawlTaskServiceRetentionTest.java @@ -19,6 +19,7 @@ import com.nanri.aiimage.modules.task.model.entity.TaskFileJobEntity; import com.nanri.aiimage.modules.task.model.entity.TaskScopeStateEntity; import com.nanri.aiimage.modules.task.service.TaskDistributedLockService; import com.nanri.aiimage.modules.task.service.TaskFileJobService; +import com.nanri.aiimage.modules.task.service.TaskProgressLightAssembler; import com.nanri.aiimage.modules.task.service.TaskProgressSnapshotService; import com.nanri.aiimage.modules.task.service.TaskResultItemService; import com.nanri.aiimage.modules.task.service.TransientPayloadStorageService; @@ -97,6 +98,13 @@ class ShopDataCrawlTaskServiceRetentionTest { @Mock private TransientPayloadStorageService transientPayloadStorageService; @Mock private InstanceMetadata instanceMetadata; @Mock private ShopDataCrawlDailyFileService dailyFileService; + /** + * Task 35 起 ShopDataCrawlTaskService 构造依赖新增了行级明细落库与轻量进度组装。 + * @InjectMocks 走构造注入时,构造参数里没有对应 @Mock 的会被传 null —— + * 漏掉这里会让 assembleDailyWorkbook 的 saveShopBatchFromSnapshot 直接 NPE。 + */ + @Mock private ShopDataCrawlItemStoreService shopDataCrawlItemStoreService; + @Mock private TaskProgressLightAssembler taskProgressLightAssembler; @Mock private PlatformTransactionManager transactionManager; @Mock private TransactionStatus transactionStatus; @Spy private final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();