当我使用TracingBehavior
向 AutoFixtureFixture
实例添加新的
fixture.Behaviors.Add(new TracingBehavior());
我在我的 R# 单元测试会话窗口中获得了跟踪输出。
AutoDataAttribute
但是,当我像这样在属性的构造函数中继承并添加行为时
我没有得到跟踪输出,即使测试表明在这两种情况下TracingBehavior
都已添加到Fixture.Behaviors
。下面是两个简单的测试和要重现的属性实现。
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());
}
}