using SSPCTester.Logic.Models; namespace SSPCTester.Logic.Testing; /// /// 按项目勾选项依次执行测试模块。 /// public sealed class TestRunner { public async Task RunAllAsync( TestContext ctx, IEnumerable modules, IProgress progress, CancellationToken ct) { var sel = ctx.Project.Selection; foreach (var m in modules) { ct.ThrowIfCancellationRequested(); bool enabled = m.Name switch { "基础测试" => sel.Basic, "开启与关断曲线" => sel.Curve, "功率损耗" => sel.Power, "保护功能" => sel.Protect, _ => false, }; if (!enabled) continue; progress.Report(new TestProgress { ModuleName = m.Name, Message = $"=== 开始 {m.Name} ===" }); await m.RunAsync(ctx, progress, ct).ConfigureAwait(false); progress.Report(new TestProgress { ModuleName = m.Name, Message = $"=== {m.Name} 完成 ===" }); } ctx.Project.LastTestedAt = DateTime.Now; } }