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

Roslyn C# CodeFix单元测试因‘Project不相等’失败求助

解决CodeFixTest中fixedProject与project不相等导致的测试失败问题
  • 检查CodeFix的项目更新逻辑
    CodeFixTest<TVerifier>.FixEachAnalyzerDiagnosticAsync会循环应用修复直到无新修改,但如果你的CodeFix每次应用都生成新的Project实例(哪怕内容符合预期),就会触发fixedProject != project判断,导致循环无法终止。确认是否在不必要的场景下重建了Project对象,应该仅修改目标文档内容而非重新生成整个Project。

  • 排查文档内容的细微差异
    即使你认为输出和预期一致,也可能存在空格、换行、缩进或隐藏字符的细微差别,这些会让Roslyn生成新的Project实例。可以在测试中添加代码,将fixedProject的文档内容与预期内容逐字符对比,定位差异点。

  • 调整测试的修复应用逻辑
    如果你的CodeFix只需要执行一次修复,可以修改测试代码,跳过框架的循环判断,直接应用一次修复后验证结果:

    var fixedProject = await ApplyCodeActionAsync(project, actionToApply, verifier, cancellationToken).ConfigureAwait(false);
    // 直接验证fixedProject的文档内容是否符合预期
    
  • 核对Roslyn版本兼容性
    VS Community 17.4.3对应特定的Roslyn版本,检查测试项目引用的Roslyn NuGet包版本是否与VS内置版本匹配,版本不一致可能导致Project实例的相等判断行为异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:15:29