c# - 在 xUnit 中加载程序集运行代码

标签 c# xunit xunit.net

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

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

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

我还在 xUnit GitHub pages 上问过- 绝对没有汇编级初始化程序。

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

最佳答案

我正在回答我自己的问题,因为几周来我一直在努力解决这个问题,并最终找到了一个可行的解决方案。

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

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


还有一个看起来很有前途的库叫做Fody.ModuleInit .然而,这是一个用于更复杂的装配编织库的插件 - 在我的例子中,更简单的解决方案更合适。

关于c# - 在 xUnit 中加载程序集运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730224/

相关文章:

C# 相当于 Java `<F extends FieldType<?>> void add(F field)`

c# - F# 中的 Func<T, TResult> 属性

c# - 如何使用 XUnit 测试方法参数类型交错数组

unit-testing - 在 XUnit 测试中使用 AutoData 和 MemberData 属性

c# - 使用私有(private)构造函数对类进行单元测试

visual-studio-2013 - Visual Studio 2013 - 不再能够与 MSTest 并行运行 xunit 测试

c# - 从另一个自定义 cmdlet 运行多个自定义 C# PowerShell cmdlet

c# - Linq Group By 两个可能不同或相同的属性

c# - xunit 测试不将输出保存到 xml

c# - Xunit 2.3.0 无法将日期作为内联参数传递