gpt4 book ai didi

xunit.net - 在与 XUnit.net 并行运行的测试之间共享状态

转载 作者:行者123 更新时间:2023-12-02 03:07:18 29 4
gpt4 key购买 nike

我有一组需要共享状态的 xunit.net 测试。希望我希望这些测试能够并行运行。所以我希望运行者这样做:

  • 创建共享夹具
  • 运行并行所有使用该夹具的测试

  • 在阅读 xunit 文档时,它说要在测试类之间共享状态,我需要定义一个“集合夹具”,然后将我的所有测试类都放入该新集合中(例如: [Collection("Database collection")])。但是当我把我的测试类放在同一个夹具中时,它们不再并行运行,所以它达到了目的:(

    有没有内置的方法可以在 XUnit 中做我想做的事情?

    我的后备是将我的共享状态放入静态类。

    最佳答案

    您可以使用 AssemblyFixture example 扩展 xUnit从下面粘贴的示例中创建一个夹具,该夹具可以在并行运行时通过测试进行访问。
    使用这种方法,fixture 在测试之前创建,然后注入(inject)到引用它的测试中。我使用它来创建一个用户,然后为该特定集合运行共享该用户。
    还有一个nuget包 xunit.assemblyfixture :

    using System;
    using Xunit;

    // The custom test framework enables the support
    [assembly: TestFramework("AssemblyFixtureExample.XunitExtensions.XunitTestFrameworkWithAssemblyFixture", "AssemblyFixtureExample")]

    // Add one of these for every fixture classes for the assembly.
    // Just like other fixtures, you can implement IDisposable and it'll
    // get cleaned up at the end of the test run.
    [assembly: AssemblyFixture(typeof(MyAssemblyFixture))]

    public class Sample1
    {
    MyAssemblyFixture fixture;

    // Fixtures are injectable into the test classes, just like with class and collection fixtures
    public Sample1(MyAssemblyFixture fixture)
    {
    this.fixture = fixture;
    }

    [Fact]
    public void EnsureSingleton()
    {
    Assert.Equal(1, MyAssemblyFixture.InstantiationCount);
    }
    }

    public class Sample2
    {
    MyAssemblyFixture fixture;

    public Sample2(MyAssemblyFixture fixture)
    {
    this.fixture = fixture;
    }

    [Fact]
    public void EnsureSingleton()
    {
    Assert.Equal(1, MyAssemblyFixture.InstantiationCount);
    }
    }

    public class MyAssemblyFixture : IDisposable
    {
    public static int InstantiationCount;

    public MyAssemblyFixture()
    {
    InstantiationCount++;
    }

    public void Dispose()
    {
    // Uncomment this and it will surface as an assembly cleanup failure
    //throw new DivideByZeroException();
    }
    }

    关于xunit.net - 在与 XUnit.net 并行运行的测试之间共享状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41878972/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com