xunit.assemblyfixture 2.2.0

dotnet add package xunit.assemblyfixture --version 2.2.0                
NuGet\Install-Package xunit.assemblyfixture -Version 2.2.0                
此命令 intend 用于 Visual Studio 的包管理器控制台,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="xunit.assemblyfixture" Version="2.2.0" />                
对于支持 包引用 的项目,请将此 XML 节点复制到项目文件中以便引用包。
paket add xunit.assemblyfixture --version 2.2.0                
#r "nuget: xunit.assemblyfixture, 2.2.0"                
#r 指令可用于 F# Interactive 和多语言笔记本。将此复制到交互工具或脚本的源代码中,以便引用包。
// Install xunit.assemblyfixture as a Cake Addin
#addin nuget:?package=xunit.assemblyfixture&version=2.2.0

// Install xunit.assemblyfixture as a Cake Tool
#tool nuget:?package=xunit.assemblyfixture&version=2.2.0                

xunit.assemblyfixture

为同一组件内的测试提供共享状态/固定数据,遵循 类固定数据 设计(而不是更复杂集合固定数据)。

为了补充 xUnit 文档样式,我毫不客气地将它的布局复制到这里。

注意:仅适用于 xunit 2.4。3.0+ 将拥有自己的方式处理此功能。

测试间的共享上下文

请阅读 xUnit 文档 了解共享上下文和各内置选项,这些选项包括:

对此项目添加以下内容:

  • 组件固定数据(在同一个测试组件内的多个测试类之间共享对象实例)

组件固定数据

何时使用:当你想要创建单个组件级别的上下文,并在组件中的所有测试中共享它,并在组件中的所有测试完成后清理它时。

有时测试上下文的创建和清理可能非常昂贵。如果你在每次测试期间运行创建和清理代码,可能会使测试比预期要慢。有时,你只需要在多个测试中聚合多个类的数据。你可以使用[xUnit.net 组件固定装置](https://nuget.net.cn/packages/xunit.assemblyfixture)的特性来在测试组件中的所有测试之间共享单个对象实例。

当使用组件固定装置时,xUnit.net将确保在所有使用该装置的测试运行之前创建装置实例,一旦所有测试完成,它将通过调用Dispose(如果存在)清理装置对象。

要使用组件固定装置,你需要采取以下步骤

  • 创建装置类,并在装置类的构造函数中放入启动代码。
  • 如果装置类需要执行清理,则在装置类中实现IDisposable,并将清理代码放在Dispose方法中。
  • IAssemblyFixture<TFixture>添加到测试类中。
  • 如果测试类需要访问装置实例,将其添加为构造函数参数,它将自动提供。

以下是一个简单的示例

public class DatabaseFixture : IDisposable
{
    public DatabaseFixture()
    {
        Db = new SqlConnection("MyConnectionString");

        // ... initialize data in the test database ...
    }

    public void Dispose()
    {
        // ... clean up test data from the database ...
    }

    public SqlConnection Db { get; private set; }
}

public class MyDatabaseTests : IAssemblyFixture<DatabaseFixture>
{
    DatabaseFixture fixture;

    public MyDatabaseTests(DatabaseFixture fixture)
    {
        this.fixture = fixture;
    }

    // ... write tests, using fixture.Db to get access to the SQL Server ...
}

在一个组件的第一个测试执行DatabaseFixture之前,xUnit.net将创建一个DatabaseFixture的实例。随后每个测试都会接收到相同的共享实例,并将其传递给MyDatabaseTests的构造函数,就像一个静态单例,但通过IDisposable实现了可预测的清理。

重要提示: xUnit.net使用接口IAssemblyFixture<>的存在来知道你想要创建并清理组件固定装置。无论你是否将类实例作为构造函数参数传递,它都会这样做。同样,如果你添加了构造函数参数但忘记了添加接口,xUnit.net将告诉你它不认识如何满足构造函数参数。

如果你需要多个装置对象,你可以根据需要多次实拟该接口,并为需要访问的装置对象实例添加构造函数参数。构造函数参数的顺序无关紧要。

注意你不可以控制装置对象创建的顺序,且装置不能依赖其他装置。如果你需要控制创建顺序,或者装置之间存在依赖关系,你应该创建一个类来封装其他两个装置,这样它就可以执行对象创建了。

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 兼容。 netstandard2.1 已计算。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard 的信息。

NuGet 包

此包未由任何 NuGet 包使用。

GitHub 仓库 (2)

显示依赖于 xunit.assemblyfixture 的最受欢迎的前 2 个 GitHub 仓库

仓库 星级
coverlet-coverage/coverlet
Cross platform code coverage for .NET
jwaliszko/ExpressiveAnnotations
基于注解的条件验证库。
版本 下载 最后更新
2.2.0 147,215 4/17/2023
2.1.1 76,597 9/9/2022
2.1.0 431 9/8/2022
2.1.0-beta 166 9/7/2022
2.0.3 637,155 8/14/2017
2.0.2 64,321 10/20/2015
2.0.1 1,151 10/9/2015
2.0.0 4,692 10/9/2015