36 lines
1.1 KiB
C#
36 lines
1.1 KiB
C#
|
|
using SSPCTester.Logic.Models;
|
||
|
|
|
||
|
|
namespace SSPCTester.Logic.Testing;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 按项目勾选项依次执行测试模块。
|
||
|
|
/// </summary>
|
||
|
|
public sealed class TestRunner
|
||
|
|
{
|
||
|
|
public async Task RunAllAsync(
|
||
|
|
TestContext ctx,
|
||
|
|
IEnumerable<ITestModule> modules,
|
||
|
|
IProgress<TestProgress> 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;
|
||
|
|
}
|
||
|
|
}
|