我大量使用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
}
这样的事情可能吗?
答案 0 :(得分:19)
您必须创建自己的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
提供。