相关疑难解决方法(0)

在XUnit测试中使用AutoData和MemberData属性

我正面临一个有趣的问题.我发现AutoDataAttribute可用于最小化测试的"排列"部分(通过ctor传递的依赖关系).真棒!

例:

public class AutoMoqDataAttribute : AutoDataAttribute
{
    public AutoMoqDataAttribute()
        : base(new Fixture().Customize(new AutoMoqCustomization()))
    { }
}

[Theory, AutoMoqData]
public void Process_ValidContext_CallsK2Workflows(
    [Frozen]Mock<IK2Datasource> k2,
    [Frozen]Mock<IAppConfiguration> config,
    PrBatchApproveBroker sut)
{
   (...)
}
Run Code Online (Sandbox Code Playgroud)

现在我想使用这个伟大的功能,并将自己的数据注入到这个理论中:

[Theory, AutoMoqData, MemberData("Data")]
public void ExtractPayments_EmptyInvoiceNumber_IgnoresRecordsWithEmptyInvoiceNumber(
        [Frozen]Mock<IExcelDatasource> xls,
        SunSystemExcelDatasource sut,
        List<Row> rows,
        int expectedCount)
{
    (...)
}
Run Code Online (Sandbox Code Playgroud)

问题:AutoData属性将为我生成随机数据.我发现的唯一方法是摆脱AutoData属性并使用MemberData.如果我这样做,我需要自己处理对象实例化:))...

有没有办法同时传递我的类一些"硬编码"数据?

谢谢你,Seb

unit-testing xunit autofixture

10
推荐指数
2
解决办法
2468
查看次数

AutoFixture CompositeDataAttribute不适用于PropertyDataAttribute

我正在尝试AutoPropertyDataAttribute基于CompositeDataAttribute此示例创建AutoFixture:PropertyData和异构参数.

它适用于单组参数,但失败并带有更多参数集.这是代码:

public static IEnumerable<object[]> NumericSequence
{
    get
    {
        yield return new object[] {1};
        //yield return new object[] {2};
    }
}

[Theory]
[AutoPropertyData("NumericSequence")]
public void Test(int? p1, int? p2, int? p3)
{
    Assert.NotNull(p1);
    Assert.NotNull(p2);
}

public class AutoPropertyDataAttribute : CompositeDataAttribute
{
    public AutoPropertyDataAttribute(string propertyName)
        : base(
              new DataAttribute[] { 
                  new PropertyDataAttribute(propertyName), 
                  new AutoDataAttribute()
              })
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试取消注释第二个yield将使用消息中断测试:

System.InvalidOperationException: Expected 2 parameters, got 1 parameters
   at Ploeh.AutoFixture.Xunit.CompositeDataAttribute.<GetData>d__0.MoveNext()
   at Xunit.Extensions.TheoryAttribute.<GetData>d__7.MoveNext()
   at Xunit.Extensions.TheoryAttribute.EnumerateTestCommands(IMethodInfo method) …
Run Code Online (Sandbox Code Playgroud)

c# xunit.net autofixture

7
推荐指数
1
解决办法
1519
查看次数

标签 统计

autofixture ×2

c# ×1

unit-testing ×1

xunit ×1

xunit.net ×1