如何将构造函数参数注入集合装置?
How can I inject constructor arguments into a collection fixture?
我正在尝试实现一个 collection fixture,其中夹具需要执行的工作(在其构造函数中)需要一个参数。我希望夹具是 generic/reusable 并且它需要知道被测单元的组装。
我如何参数化集合夹具,以便集合中的测试可以为夹具提供此 "context?"
我最终创建了一个抽象集合装置,它带有一个受保护的构造函数,该构造函数采用必要的参数(在我的例子中,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> { ... }
我正在尝试实现一个 collection fixture,其中夹具需要执行的工作(在其构造函数中)需要一个参数。我希望夹具是 generic/reusable 并且它需要知道被测单元的组装。
我如何参数化集合夹具,以便集合中的测试可以为夹具提供此 "context?"
我最终创建了一个抽象集合装置,它带有一个受保护的构造函数,该构造函数采用必要的参数(在我的例子中,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> { ... }