测试源生成器找不到Xunit.Sdk.EqualException

问题描述 投票:0回答:1

我正在尝试测试我的 .NET 7 C#

IIncrementalGenerator
源生成器,但是当测试运行时,我不断收到此异常:

System.MissingMethodException:找不到方法:'Void Xunit.Sdk.EqualException..ctor(System.Object,System.Object'。

我无法弄清楚我缺少什么,因为我似乎正在将当前程序集的引用加载到编译中。

我正在使用下面的类来运行测试:

public class SourceGeneratorVerifier : SourceGeneratorTest<XUnitVerifier> {
    public override string Language => LanguageNames.CSharp;

    protected override CompilationOptions CreateCompilationOptions() => new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);

    protected override GeneratorDriver CreateGeneratorDriver(Project project, ImmutableArray<ISourceGenerator> sourceGenerators) => CSharpGeneratorDriver.Create(sourceGenerators, project.AnalyzerOptions.AdditionalFiles, (CSharpParseOptions)project.ParseOptions!, project.AnalyzerOptions.AnalyzerConfigOptionsProvider);

    protected override ParseOptions CreateParseOptions() => new CSharpParseOptions(LanguageVersion.Default, DocumentationMode.Diagnose);

    protected override IEnumerable<ISourceGenerator> GetSourceGenerators() { yield return new LampCodeGenerator().AsSourceGenerator(); }

    protected override string DefaultFileExt => "cs";

    public static Task RunTestAsync(string source, string expected, params string[] path) {
        var assemblies = new ReferenceAssemblies("net7.0", new PackageIdentity("Microsoft.NETCore.App.Ref", "7.0.0"), Path.Combine("ref", "net7.0"));

        var test = new SourceGeneratorVerifier {
            TestState = {
                ReferenceAssemblies = assemblies,
                Sources = {
                    source
                },
                GeneratedSources = {
                    ($"GeneratorAttributes.g.cs", "...."),
                    (Path.Combine(path), expected)
                }
            }
        };

        test.TestState.AdditionalReferences.Add(typeof(SourceGeneratorVerifier).Assembly);

        return test.RunAsync();
    }
}

我的测试项目包含以下参考资料:

  <ItemGroup>
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.XUnit" Version="1.1.1" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
    <PackageReference Include="FluentAssertions" Version="6.12.0" />
    <PackageReference Include="xunit" Version="2.5.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.5.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="coverlet.collector" Version="6.0.0">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit" Version="1.1.1" />
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" Version="1.1.1" />
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.CodeRefactoring.Testing.XUnit" Version="1.1.1" />
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.7.0" PrivateAssets="all" />
  </ItemGroup>
.net xunit .net-7.0 sourcegenerators
1个回答
0
投票

有同样的问题。 似乎可能与https://github.com/dotnet/roslyn-sdk/issues/1099

有关
© www.soinside.com 2019 - 2024. All rights reserved.