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。 –