Возможно ли, что ITestOutputHelper, созданный xUnit, будет доступен в контексте AutoFixture?Возможно ли, что ITestOutputHelper, созданный xUnit, будет доступен в контексте AutoFixture?
В моих тестах интеграции я использую класс Builder, который содержит вспомогательные методы для некоторых рутинных операций. Чтобы скрыть сложность создания класса, я использую собственный атрибут AutoDataAttribute, поэтому мои тесты получают созданный объект как параметр метода теста из AutoFixture.
Теперь я решил добавить некоторые функции ведения журнала в Builder и не могу узнать, как передать ITestOutputHelper в конструктор Builder из пользовательского атрибута AutoDataAttribute.
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', который передается конструктору тестового класса. У меня нет полного представления о том, что API xUnit.net позволяет вам делать, но если он не предоставляет точку расширяемости, которая позволяет вам получить введенный «ITestOutputHelper», когда вызывается «DataAttribute.GetData», я не думаю это возможно ... –
Благодарим за информацию, посмотрим на DataAttribute. –