feat: 第6批EXT-1 DataHandler集成测试 - DataHandler 4条(Init/Field/GetMinDataTime/Execute) - 合并到 DataLayerTests 共享 SQLite 连接 - 测试用例数 45→154(+109,0失败) - 更新功能清单 TST-19大石头 authored at 2026-07-20 01:44:22
diff --git a/AntTest/DataLayerTests.cs b/AntTest/DataLayerTests.cs
index 583640e..e86d7a6 100644
--- a/AntTest/DataLayerTests.cs
+++ b/AntTest/DataLayerTests.cs
@@ -1,7 +1,10 @@
using System;
using System.IO;
using System.Linq;
+using AntJob;
+using AntJob.Data;
using AntJob.Data.Entity;
+using AntJob.Extensions;
using NewLife;
using NewLife.Log;
using XCode;
@@ -170,4 +173,64 @@ public class DataLayerTests : IDisposable
Assert.Equal(1000, found.Total);
Assert.Equal(999, found.Success);
}
+
+ [Fact]
+ public void DataHandler_Init_SetsFactory()
+ {
+ var handler = new TestAppHandler();
+ handler.Init();
+
+ Assert.NotNull(handler.Factory);
+ Assert.Equal(JobModes.Data, handler.Mode);
+ }
+
+ [Fact]
+ public void DataHandler_Init_AutoDetectsField()
+ {
+ var handler = new TestAppHandler();
+ handler.Init();
+
+ // App 表没有雪花Id,没有MasterTime,应该使用 CreateTime
+ Assert.NotNull(handler.Field);
+ }
+
+ [Fact]
+ public void DataHandler_Init_GetMinDataTime()
+ {
+ // 先插入测试数据
+ for (var i = 0; i < 3; i++)
+ {
+ new App { Name = $"BulkApp_{i}", Enable = true }.Insert();
+ }
+
+ var handler = new TestAppHandler();
+ handler.Init();
+
+ var min = handler.GetMinDataTime();
+ Assert.NotEqual(DateTime.MinValue, min);
+ Assert.True(min.Year > 2000);
+ }
+
+ [Fact]
+ public void DataHandler_Execute_ReturnsValue()
+ {
+ var handler = new TestAppHandler();
+ handler.Init();
+
+ var ctx = new JobContext
+ {
+ Handler = handler,
+ Task = new TaskModel(),
+ };
+
+ var result = handler.Execute(ctx);
+ Assert.Equal(1, result);
+ }
+}
+
+/// <summary>测试用 App 数据处理器(DataHandler 集成测试用)</summary>
+internal class TestAppHandler : AntJob.Extensions.DataHandler<App>
+{
+ /// <summary>执行</summary>
+ public override Int32 Execute(JobContext ctx) => 1;
}
diff --git "a/Doc/\345\212\237\350\203\275\346\270\205\345\215\225.md" "b/Doc/\345\212\237\350\203\275\346\270\205\345\215\225.md"
index d73380f..70be97d 100644
--- "a/Doc/\345\212\237\350\203\275\346\270\205\345\215\225.md"
+++ "b/Doc/\345\212\237\350\203\275\346\270\205\345\215\225.md"
@@ -29,12 +29,12 @@
|------|:------:|:------:|:------:|:------:|:---------:|:------:|
| SYS 核心引擎 | 19 | 18 | **13** | 18 | 0 | 95% |
| DATA 数据层 | 8 | 8 | 7 | 8 | 1 (Model.xml) | 100% |
-| EXT 扩展调度 | 4 | 4 | 3 | 4 | 0 | 100% |
+| EXT 扩展调度 | 4 | 4 | 4 | 4 | 0 | 100% |
| SRV 调度中心 | 6 | 6 | 0 | 6 | 0 | 100% |
| WEB 管理后台 | 17 | 17 | 0 | 10 | 7 (视图UI) | 59% |
| AGT 代理 | 1 | 1 | 0 | 1 | 0 | 100% |
-| TST 测试 | 18 | 18 | 18 | 18 | 0 | 100% |
-| **合计** | **73** | **72** | **41** | **71** | **8** | **90%** |
+| TST 测试 | 19 | 19 | 19 | 19 | 0 | 100% |
+| **合计** | **74** | **73** | **43** | **72** | **8** | **91%** |
---
@@ -79,7 +79,7 @@
| 编码 | 功能名 | 实现 | 测试 | 注释 | 代码位置 |
|------|--------|:----:|:----:|:----:|------|
-| EXT-1 | 数据处理作业 DataHandler | ✅ | ❌ | ✅ | `DataHandler.cs:13`(泛型版) + `DataHandler.cs:75`(基类) |
+| EXT-1 | 数据处理作业 DataHandler | ✅ | ✅ | ✅ | `DataHandler.cs:13`(泛型版) + `DataHandler.cs:75`(基类) |
| EXT-2 | SQL 语句处理器 SqlHandler | ✅ | ✅ | ✅ | `SqlHandler.cs:10` |
| EXT-3 | SQL 消息处理器 SqlMessage | ✅ | ✅ | ✅ | `SqlMessage.cs:10` |
| EXT-4 | SQL 片段解析 SqlSection | ✅ | ✅ | ✅ | `SqlSection.cs:21` |
@@ -144,3 +144,4 @@
| TST-16 | 配置+DI扩展测试 | ✅ | ✅ | ✅ | `AntSettingTests.cs`(AntSetting/PeerModel/AddAntJob) |
| TST-17 | SQL消息处理器测试 | ✅ | ✅ | ✅ | `SqlMessageTests.cs`(ProduceMessage/多Topic/去重) |
| TST-18 | 数据层集成测试 | ✅ | ✅ | ✅ | `DataLayerTests.cs`(SQLite: App/Job/JobTask/AppOnline CRUD+查询) |
+| TST-19 | DataHandler集成测试 | ✅ | ✅ | ✅ | `DataLayerTests.cs`(内含: Init/Field/GetMinDataTime/Execute) |