xunit - 如何将构造函数参数注入集合夹具?
问题描述
我正在尝试实现一个集合夹具,其中夹具需要执行的工作(在其构造函数中)需要一个参数。我希望夹具是通用的/可重复使用的,它需要知道被测试单元的组装。
如何参数化集合夹具,以便集合中的测试可以为夹具提供这个“上下文”?
解决方案
我最终创建了一个抽象集合夹具,它带有一个受保护的构造函数,该构造函数采用必要的参数(在我的例子中是Assembly
)。然后,我定义了具有无参数构造函数的小型子类,该构造函数使用正确的参数调用继承的构造函数。
public abstract class BaseCollectionFixture<TFixture> : ICollectionFixture<TFixture>
where TFixture : class
{
protected BaseCollectionFixture(Assembly assemblyUnderTest)
{
// Do my fixture stuff with the assembly
}
}
[CollectionDefinition("Special tests")
public class ConcreteFixture : BaseCollectionFixture<ConcreteFixture>
{
public ConcreteFixture() : base(typeof(MyClassUnderTest).Assembly) {}
}
然后我在这样的测试中使用它:
public MyClassTests<ConcreteFixture> { ... }
推荐阅读
- linux - 在 linux 中找不到与命令“dotnet-ef”匹配的可执行文件
- php - 如何从 $_FILES 重新传递图像文件?
- smartsheet-api - 是否可以在 Smartsheet API 中创建新工作表而无需从现有工作表中复制
- c - 将用户输入的值从一个函数传递到另一个 C 时出现问题
- c++ - 在现代 C++ 中使用模板替换函数指针数组
- react-native - Using Redux Reselect and PureComponent - Nothing updates
- c# - 如何在wpf中找到文本框的插入符号位置
- angular - How to change content with
on non-main page? - php-7 - In PHP7 how Replace thes code from preg_replace() to preg_replace_callback()
- r - 基于具有相同名称的数据框中添加列