When I add a new TracingBehavior
to an AutoFixture Fixture
instance using
fixture.Behaviors.Add(new TracingBehavior());
I get tracing output in my R# Unit Test Sessions window.
However, when I inherit AutoDataAttribute
and add the behavior inside my attribute's constructor like this
I get no tracing output, even though the tests would indicate that the TracingBehavior
has been added to the Fixture.Behaviors
in both scenarios. Below are two simple tests and the attribute implementation to reproduce.
public class TracingBehaviorTests
{
[Theory, AutoData]
public void TracingOutputDisplayedWhenManuallyAddedToFixture(Fixture fixture)
{
fixture.Behaviors.Add(new TracingBehavior());
var actual = fixture.Behaviors.OfType<TracingBehavior>().Any();
Assert.Equal(true, actual); // Passes
fixture.Create<string>(); // Tracing output displayed
}
[Theory, TracingFixtureConventions]
public void TracingOutputDisplayedWhenUsingTracingFixtureConventionsAttribute(Fixture fixture)
{
var actual = fixture.Behaviors.OfType<TracingBehavior>().Any();
Assert.Equal(true, actual); // Passes
fixture.Create<string>(); // No tracing output displayed
}
}
public class TracingFixtureConventionsAttribute : AutoDataAttribute
{
public TracingFixtureConventionsAttribute()
: base(new Fixture())
{
this.Fixture.Behaviors.Add(new TracingBehavior());
}
}