C# 在xUnit中加载程序集时运行代码

C# 在xUnit中加载程序集时运行代码,c#,xunit,xunit.net,C#,Xunit,Xunit.net,我将该库用作模拟数据库,它有一些必须在程序集加载时运行的初始化代码 我曾尝试在静态构造函数中添加此初始化代码,该构造函数通过基类构造函数从每个测试中引用,但这不符合库的要求 类似问题的答案提到了AssemblyInitialize属性,但这不适用于xUnit-xUnit无法在程序集加载时运行代码 我还问了一个问题-没有任何汇编级初始值设定项 如何在xUnit中运行所需的初始化代码?我在回答自己的问题,因为我已经尝试了几个星期,终于找到了一个有效的解决方案 它是一个第三方独立软件包,名为。有一个简

我将该库用作模拟数据库,它有一些必须在程序集加载时运行的初始化代码

我曾尝试在静态构造函数中添加此初始化代码,该构造函数通过基类构造函数从每个测试中引用,但这不符合库的要求

类似问题的答案提到了
AssemblyInitialize
属性,但这不适用于xUnit-xUnit无法在程序集加载时运行代码

我还问了一个问题-没有任何汇编级初始值设定项


如何在xUnit中运行所需的初始化代码?

我在回答自己的问题,因为我已经尝试了几个星期,终于找到了一个有效的解决方案

它是一个第三方独立软件包,名为。有一个简单易用的包:在项目中安装该包,安装脚本将创建一个名为
ModulerInitializer.cs
的文件。它还将向项目文件中添加一个生成后步骤,该步骤将
ModuleInitializer.Run()
中的代码注入模块初始值设定项。这是“保证在模块中的任何其他代码运行之前,在任何类型初始值设定项、静态构造函数或任何其他初始化代码之前运行”

实际上,这意味着您所要做的就是安装软件包并编写安装代码——这真的是再简单不过了。感谢所有参与的人



还有一个很有前途的图书馆叫做。然而,这是一个用于更复杂的组装编织库的插件-在我的情况下,更简单的解决方案更合适。

似乎最好的解决方案是分叉xUnit,并添加MSTest和nUnit中缺少的功能。同样的问题也困扰了我,这个解决方案非常有效!也可以在这里看到答案:静态构造函数到底缺少什么?@OhadSchneider这是六年前的事了,所以我的记忆非常模糊!我记得,调用静态构造函数的时间不够早。我已经很多年没有努力了,所以情况可能已经改变了