test(cnc-service): 新增 Starting 状态测试用例,验证服务启动中状态返回正确

feat/windows-service-status-auto
haoliang 2 days ago
parent 0212ed6afc
commit acdc502be2

@ -88,5 +88,24 @@ namespace CncService.Tests
Assert.Equal("Running", serviceStatusVal);
Assert.Equal("running", statusVal);
}
[Fact]
public void GetCollectorStatus_With_Starting_ServiceStatus_Returns_Starting_State()
{
var latest = new CollectorHeartbeat { Id = 2, ServiceId = "collector-service", Status = "running", UptimeSeconds = 120, LastCollectTime = DateTime.Now, CreatedAt = DateTime.Now };
var dashboardRepo = new FakeDashboardRepository();
var heartbeatRepo = new FakeCollectorHeartbeatRepository(latest);
var checker = new FakeWindowsServiceChecker(CncService.Interface.ServiceStatusEnum.Starting);
var svc = new DashboardService(dashboardRepo, heartbeatRepo, checker);
var resultObj = svc.GetCollectorStatus();
var t = resultObj.GetType();
var serviceStatusProp = t.GetProperty("serviceStatus");
var statusProp = t.GetProperty("status");
var serviceStatusVal = serviceStatusProp.GetValue(resultObj) as string;
var statusVal = statusProp.GetValue(resultObj) as string;
Assert.Equal("Starting", serviceStatusVal);
Assert.Equal("running", statusVal);
}
}
}

@ -1,39 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<TestRun id="5ab07c77-7271-4b25-a1e3-31ccefb837c1" name="jiang@DESKTOP-FEAIV5E 2026-05-03 11:09:40" runUser="DESKTOP-FEAIV5E\jiang" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Times creation="2026-05-03T11:09:40.1401238+08:00" queuing="2026-05-03T11:09:40.1401242+08:00" start="2026-05-03T11:09:37.9060678+08:00" finish="2026-05-03T11:09:40.1486843+08:00" />
<TestSettings name="default" id="04bca397-b2d6-4381-9eef-a22546b0f331">
<Deployment runDeploymentRoot="jiang_DESKTOP-FEAIV5E_2026-05-03_11_09_40" />
<TestRun id="3f490b79-261d-48db-ad3b-876165bfd69b" name="jiang@DESKTOP-FEAIV5E 2026-05-03 11:42:34" runUser="DESKTOP-FEAIV5E\jiang" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Times creation="2026-05-03T11:42:34.6390103+08:00" queuing="2026-05-03T11:42:34.6390106+08:00" start="2026-05-03T11:42:32.8181872+08:00" finish="2026-05-03T11:42:34.6470263+08:00" />
<TestSettings name="default" id="1d427bbd-99bf-4edf-af16-1db90aff29a0">
<Deployment runDeploymentRoot="jiang_DESKTOP-FEAIV5E_2026-05-03_11_42_34" />
</TestSettings>
<Results>
<UnitTestResult executionId="f53bc1cb-5030-4fef-ab5f-4644a36bd6cb" testId="d78b4668-1844-6210-7271-1e302f64ff27" testName="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_Running_Heartbeats_Returns_Running_State" computerName="DESKTOP-FEAIV5E" duration="00:00:00.0010000" startTime="2026-05-03T11:09:39.9573096+08:00" endTime="2026-05-03T11:09:39.9573096+08:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="f53bc1cb-5030-4fef-ab5f-4644a36bd6cb" />
<UnitTestResult executionId="a730d4b9-63cd-40dd-9d0e-328c4fe3d631" testId="f1da308c-ef1e-1db3-e8bc-9a4b01e12f99" testName="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_NotInstalled_Service_Returns_NotInstalled_State" computerName="DESKTOP-FEAIV5E" duration="00:00:00.0180000" startTime="2026-05-03T11:09:39.9463357+08:00" endTime="2026-05-03T11:09:39.9463357+08:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a730d4b9-63cd-40dd-9d0e-328c4fe3d631" />
<UnitTestResult executionId="a514ae5f-797f-4243-9a05-c4210fa89c21" testId="f1da308c-ef1e-1db3-e8bc-9a4b01e12f99" testName="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_NotInstalled_Service_Returns_NotInstalled_State" computerName="DESKTOP-FEAIV5E" duration="00:00:00.0120000" startTime="2026-05-03T11:42:34.4892145+08:00" endTime="2026-05-03T11:42:34.4892145+08:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a514ae5f-797f-4243-9a05-c4210fa89c21" />
<UnitTestResult executionId="a205b11d-49f2-4df3-af5f-469aad6147df" testId="cd273dbd-1740-a03d-e2ba-a96344c7733a" testName="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_Starting_ServiceStatus_Returns_Starting_State" computerName="DESKTOP-FEAIV5E" duration="00:00:00.0010000" startTime="2026-05-03T11:42:34.4962273+08:00" endTime="2026-05-03T11:42:34.4962273+08:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a205b11d-49f2-4df3-af5f-469aad6147df" />
<UnitTestResult executionId="8c564fca-a2c1-4263-b4ac-019b1ecd0ae5" testId="d78b4668-1844-6210-7271-1e302f64ff27" testName="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_Running_Heartbeats_Returns_Running_State" computerName="DESKTOP-FEAIV5E" duration="00:00:00.0010000" startTime="2026-05-03T11:42:34.4982194+08:00" endTime="2026-05-03T11:42:34.4982194+08:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="8c564fca-a2c1-4263-b4ac-019b1ecd0ae5" />
</Results>
<TestDefinitions>
<UnitTest name="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_NotInstalled_Service_Returns_NotInstalled_State" storage="e:\opencode\haoliang\tests\cncservice.tests\bin\release\net472\cncservice.tests.dll" id="f1da308c-ef1e-1db3-e8bc-9a4b01e12f99">
<Execution id="a730d4b9-63cd-40dd-9d0e-328c4fe3d631" />
<Execution id="a514ae5f-797f-4243-9a05-c4210fa89c21" />
<TestMethod codeBase="E:\opencode\haoliang\tests\CncService.Tests\bin\Release\net472\CncService.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/net" className="CncService.Tests.DashboardServiceTests" name="GetCollectorStatus_With_NotInstalled_Service_Returns_NotInstalled_State" />
</UnitTest>
<UnitTest name="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_Starting_ServiceStatus_Returns_Starting_State" storage="e:\opencode\haoliang\tests\cncservice.tests\bin\release\net472\cncservice.tests.dll" id="cd273dbd-1740-a03d-e2ba-a96344c7733a">
<Execution id="a205b11d-49f2-4df3-af5f-469aad6147df" />
<TestMethod codeBase="E:\opencode\haoliang\tests\CncService.Tests\bin\Release\net472\CncService.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/net" className="CncService.Tests.DashboardServiceTests" name="GetCollectorStatus_With_Starting_ServiceStatus_Returns_Starting_State" />
</UnitTest>
<UnitTest name="CncService.Tests.DashboardServiceTests.GetCollectorStatus_With_Running_Heartbeats_Returns_Running_State" storage="e:\opencode\haoliang\tests\cncservice.tests\bin\release\net472\cncservice.tests.dll" id="d78b4668-1844-6210-7271-1e302f64ff27">
<Execution id="f53bc1cb-5030-4fef-ab5f-4644a36bd6cb" />
<Execution id="8c564fca-a2c1-4263-b4ac-019b1ecd0ae5" />
<TestMethod codeBase="E:\opencode\haoliang\tests\CncService.Tests\bin\Release\net472\CncService.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/net" className="CncService.Tests.DashboardServiceTests" name="GetCollectorStatus_With_Running_Heartbeats_Returns_Running_State" />
</UnitTest>
</TestDefinitions>
<TestEntries>
<TestEntry testId="d78b4668-1844-6210-7271-1e302f64ff27" executionId="f53bc1cb-5030-4fef-ab5f-4644a36bd6cb" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
<TestEntry testId="f1da308c-ef1e-1db3-e8bc-9a4b01e12f99" executionId="a730d4b9-63cd-40dd-9d0e-328c4fe3d631" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
<TestEntry testId="f1da308c-ef1e-1db3-e8bc-9a4b01e12f99" executionId="a514ae5f-797f-4243-9a05-c4210fa89c21" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
<TestEntry testId="cd273dbd-1740-a03d-e2ba-a96344c7733a" executionId="a205b11d-49f2-4df3-af5f-469aad6147df" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
<TestEntry testId="d78b4668-1844-6210-7271-1e302f64ff27" executionId="8c564fca-a2c1-4263-b4ac-019b1ecd0ae5" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
</TestEntries>
<TestLists>
<TestList name="列表中未列出的结果" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
<TestList name="所有已加载的结果" id="19431567-8539-422a-85d7-44ee4e166bda" />
</TestLists>
<ResultSummary outcome="Completed">
<Counters total="2" executed="2" passed="2" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" />
<Counters total="3" executed="3" passed="3" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" />
<Output>
<StdOut>[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.4.3+1b45f5407b (64-bit Desktop .NET 4.0.30319.42000)&#xD;
[xUnit.net 00:00:00.39] Discovering: CncService.Tests&#xD;
[xUnit.net 00:00:00.53] Discovered: CncService.Tests&#xD;
[xUnit.net 00:00:00.55] Starting: CncService.Tests&#xD;
[xUnit.net 00:00:00.74] Finished: CncService.Tests&#xD;
[xUnit.net 00:00:00.31] Discovering: CncService.Tests&#xD;
[xUnit.net 00:00:00.41] Discovered: CncService.Tests&#xD;
[xUnit.net 00:00:00.42] Starting: CncService.Tests&#xD;
[xUnit.net 00:00:00.55] Finished: CncService.Tests&#xD;
</StdOut>
</Output>
</ResultSummary>

Loading…
Cancel
Save