You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无代码变更后单元测试意外失败:System.Management.ManagementException

问题

未修改任何代码的情况下,执行单元测试时意外失败,抛出如下异常:

System.TypeInitializationException: The type initializer for 'DiffEngine.ProcessCleanup' threw an exception.

System.TypeInitializationException
The type initializer for 'DiffEngine.ProcessCleanup' threw an exception.
   at DiffEngine.ProcessCleanup.Kill(String command)
   at DiffEngine.DiffRunner.Kill(String tempFile, String targetFile) in C:\projects\diffengine\src\DiffEngine\DiffRunner_Kill.cs:line 32
   at VerifyEngine.ProcessEquals() in /_/src/Verify/Verifier/VerifyEngine.cs:line 179
   at VerifyEngine.ThrowIfRequired() in /_/src/Verify/Verifier/VerifyEngine.cs:line 119
   at InnerVerifier.VerifyInner(Object target, Func`1 cleanup, IEnumerable`1 targets) in /_/src/Verify/Verifier/InnerVerifier_Inner.cs:line 33
   at InnerVerifier.Verify[T](T target) in /_/src/Verify/Verifier/InnerVerifier_Json.cs:line 80
   at VerifyXunit.Verifier.<>c__DisplayClass1_0.<<Verify>b__0>d.MoveNext() in /_/src/Verify.Xunit/Verifier.cs:line 30
--- End of stack trace from previous location ---
   at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass48_1.<<InvokeTestMethodAsync>b__1>d.MoveNext() in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 264
--- End of stack trace from previous location ---
   at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48
   at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) in C:\Dev\xunit\xunit\src\xunit.core\Sdk\ExceptionAggregator.cs:line 90

System.Management.ManagementException
Ungültige Klasse 
   at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
   at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
   at WindowsProcess.FindAll()+MoveNext() in C:\projects\diffengine\src\DiffEngine\Process\WindowsProcess.cs:line 38
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source, Int32& length)
   at System.Linq.OrderedEnumerable`1.ToList()
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at DiffEngine.ProcessCleanup.Refresh() in C:\projects\diffengine\src\DiffEngine\Process\ProcessCleanup.cs:line 36
   at DiffEngine.ProcessCleanup..cctor() in C:\projects\diffengine\src\DiffEngine\Process\ProcessCleanup.cs:line 30
已完成的排查步骤
  • 重新安装.NET SDK和Rider
  • 重新拉取项目master分支代码
  • 确认团队其他成员的单元测试可正常运行
分析与解决方法

异常根源是System.Management.ManagementException: Ungültige Klasse(德语,意为“无效类”),说明DiffEngine通过WMI(Windows管理规范)查询Windows进程时,找不到对应WMI类,大概率是本地WMI存储库损坏或权限问题。

尝试以下解决步骤:

  1. 修复WMI存储库
    以管理员身份打开命令提示符,执行命令:

    winmgmt /resetrepository
    

    该命令会重置WMI存储库,修复损坏的类定义。

  2. 检查WMI服务状态
    打开服务管理器,找到Windows Management Instrumentation服务,确认其处于运行状态;若未运行,手动启动该服务。

  3. 验证WMI类可用性
    运行wbemtest命令打开WMI测试工具:

    • 点击“连接”,命名空间输入root\cimv2,点击“连接”
    • 点击“查询”,输入SELECT * FROM Win32_Process,点击“应用”
      若能正常返回进程列表,说明WMI类正常;若报错,需进一步修复WMI。
  4. 清理项目编译缓存
    删除项目目录下的bin和obj文件夹,重新生成项目,避免残留缓存影响测试运行。

  5. 检查用户权限
    确保当前用户拥有访问WMI的权限,特别是读取Win32_Process类的权限。可通过组策略或WMI权限设置工具调整。

内容的提问来源于stack exchange,提问作者AnneTest123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:47:37