如何将 AutoDataAttribute 与 InlineData 结合使用
How to combine AutoDataAttribute with InlineData
我大量使用 Autofixture AutoData Theories 来创建我的数据和模拟。然而,这阻止了我使用 XUnit 的 InlineData 属性为我的测试输入一堆不同的数据。
所以我基本上是在寻找这样的东西:
[Theory, AutoMoqDataAttribute]
[InlineData(3,4)]
[InlineData(33,44)]
[InlineData(13,14)]
public void SomeUnitTest([Frozen]Mock<ISomeInterface> theInterface, MySut sut, int DataFrom, int OtherData)
{
// actual test omitted
}
这样的事情可能吗?
您必须创建自己的 InlineAutoMoqDataAttribute
,类似于:
public class InlineAutoMoqDataAttribute : InlineAutoDataAttribute
{
public InlineAutoMoqDataAttribute(params object[] objects) : base(new AutoMoqDataAttribute(), objects) { }
}
你会像这样使用它:
[Theory]
[InlineAutoMoqData(3,4)]
[InlineAutoMoqData(33,44)]
[InlineAutoMoqData(13,14)]
public void SomeUnitTest(int DataFrom, int OtherData, [Frozen]Mock<ISomeInterface> theInterface, MySut sut)
{
// actual test omitted
}
注意内联数据,本例中的整数,必须是测试方法的第一个参数。
所有其他参数将由 AutoFixture
.
提供
使用最新的AutoFixture,可以使用Inline AutoData Theories
Uses the InlineData values for the the first method arguments, and then uses AutoData for the rest (when the InlineData values run out).
我大量使用 Autofixture AutoData Theories 来创建我的数据和模拟。然而,这阻止了我使用 XUnit 的 InlineData 属性为我的测试输入一堆不同的数据。
所以我基本上是在寻找这样的东西:
[Theory, AutoMoqDataAttribute]
[InlineData(3,4)]
[InlineData(33,44)]
[InlineData(13,14)]
public void SomeUnitTest([Frozen]Mock<ISomeInterface> theInterface, MySut sut, int DataFrom, int OtherData)
{
// actual test omitted
}
这样的事情可能吗?
您必须创建自己的 InlineAutoMoqDataAttribute
,类似于:
public class InlineAutoMoqDataAttribute : InlineAutoDataAttribute
{
public InlineAutoMoqDataAttribute(params object[] objects) : base(new AutoMoqDataAttribute(), objects) { }
}
你会像这样使用它:
[Theory]
[InlineAutoMoqData(3,4)]
[InlineAutoMoqData(33,44)]
[InlineAutoMoqData(13,14)]
public void SomeUnitTest(int DataFrom, int OtherData, [Frozen]Mock<ISomeInterface> theInterface, MySut sut)
{
// actual test omitted
}
注意内联数据,本例中的整数,必须是测试方法的第一个参数。
所有其他参数将由 AutoFixture
.
使用最新的AutoFixture,可以使用Inline AutoData Theories
Uses the InlineData values for the the first method arguments, and then uses AutoData for the rest (when the InlineData values run out).