我大量使用Autofixture AutoData理论来创建数据和模拟。但是,这阻止了我使用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
}

请注意,内联数据(在这种情况下为int)必须是测试方法的第一个参数。
所有其他参数将由AutoFixture提供。

关于c# - 如何将AutoDataAttribute与InlineData结合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37169164/

10-09 04:36