NewLife/AntJob

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
3c670af
Tree
1 Parent(s) 6190966
Summary: 2 changed files with 68 additions and 4 deletions.
Modified +63 -0
Modified +5 -4
Modified +63 -0
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;
 }
Modified +5 -4
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) |