2
是否可以让xUnit创建的ITestOutputHelper在AutoFixture上下文中可用?是否可以让由xUnit创建的ITestOutputHelper在AutoFixture上下文中可用?
在我的集成测试中,我使用了Builder类,它包含一些例行操作的辅助方法。为了隐藏类创建的复杂性,我使用自定义的AutoDataAttribute,因此我的测试从AutoFixture获取创建的对象作为测试方法参数。
现在我决定向Builder添加一些日志记录功能,但无法找到如何将ITestOutputHelper从自定义AutoDataAttribute传递到Builder构造函数中。
using Ploeh.AutoFixture;
using Ploeh.AutoFixture.AutoNSubstitute;
using Ploeh.AutoFixture.Xunit2;
using Xunit;
using Xunit.Abstractions;
namespace XunitAutoFixtItestOutput
{
public class Class1Tests
{
private readonly ITestOutputHelper _output;
public Class1Tests(ITestOutputHelper output)
{
_output = output;
}
[Theory, DefaultAutoData]
public void UnitOfWork_StateUnderTest_ExpectedBehavior(Builder builder)
{
}
}
public class Builder
{
private readonly ITestOutputHelper _outputHelper;
public Builder(ITestOutputHelper outputHelper)
{
_outputHelper = outputHelper;
}
public void DoSomething()
{
_outputHelper.WriteLine("Something happened");
}
}
public class DefaultAutoData : AutoDataAttribute
{
public DefaultAutoData() : base(new Fixture().Customize(new DefaultCustomization()))
{
this.Fixture.Customize<Builder>(f => f.FromFactory(new Builder(??Where to get it from??)));
}
}
public class DefaultCustomization : CompositeCustomization
{
public DefaultCustomization() : base(new AutoConfiguredNSubstituteCustomization())
{
}
}
}
xUnit.net控制测试类的寿命,以及因为它会创建传递给测试类的构造函数的ITestOutputHelper实例。我没有完全了解xUnit.net的API可以让你做什么,但是除非它提供了一个可扩展性点,使得在调用DataAttribute.GetData时可以获得注入的'ITestOutputHelper',我不认为这是可能的... –
感谢您的信息,将看看DataAttribute。 –