XUnit和AutoFixture异常:找不到(测试名称)的数据。

8

我有一个非常简单的测试,如下所示。 我尝试使用AutoDataAttribute+AutoMoqCustomization来冻结我的两个依赖。

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

public class PrBatchEndorseBrokerTest
{
    [Theory, AutoMoqData]
    public void Process_ValidContext_CallsK2Workflows(
        [Frozen]Mock<IK2Datasource> k2,
        [Frozen]Mock<IAppConfiguration> config,
        PrBatchEndorseBroker sut)
    {
        // Arrange
        var data = new Dictionary<string, object>
        {
            ["Workflow"] = @"KLPurchaseRequest\PR",
            ["Activity"] = "Endorser",
            ["ViewFormURL"] = "/Form/KLPurchaseRequestApproval.Form",
            ["PositiveOutcome"] = "Endorse",
            ["NegativeOutcome"] = "Reject"
        };

        // Act
        sut.Process();

        // Assert
        k2.Verify(x =>
            x.StartInstance(It.IsAny<string>(),
                            It.Is<Dictionary<string, object>>(d =>
                                data.Keys.All(k => d[k] == data[k])))
            , Times.Once());
    }
}

由于某些原因,当我运行此测试时,出现以下错误:

System.InvalidOperationException: 未找到 BlackBox.Stakhanov.Broker.Test.PrBatchEndorseBrokerTest.Process_ValidContext_CallsK2Workflows 的数据

我尝试了很多方法,但无法使其正常工作!我认为我可能错过了某些重要且明显的东西!
我使用的软件包:
<package id="AutoFixture" version="3.47.8" targetFramework="net452" />
<package id="AutoFixture.AutoMoq" version="3.47.8" targetFramework="net452" />
<package id="AutoFixture.Xunit" version="3.47.8" targetFramework="net461" />
<package id="Castle.Core" version="3.3.3" targetFramework="net461" />
<package id="Moq" version="4.5.10" targetFramework="net461" />
<package id="xunit" version="2.1.0" targetFramework="net461" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net452" />
<package id="xunit.assert" version="2.1.0" targetFramework="net461" />
<package id="xunit.core" version="2.1.0" targetFramework="net461" />
<package id="xunit.extensibility.core" version="2.1.0" targetFramework="net461" />
<package id="xunit.extensibility.execution" version="2.1.0" targetFramework="net461" />
<package id="xunit.extensions" version="1.9.0.1566" targetFramework="net461" />

你试过将 AutoMoqDataAttribute 改为 public 吗? - Mark Seemann
是的,结果一样。我尝试删除PrBatchEndorseBroker,然后再添加回来...总是出现相同的错误。 - user4478810
请问您能否准确列出您正在使用的 NuGet 包?您可以通过 NuGet 包管理器控制台中的 Get-Package 命令轻松获取列表。 - Mark Seemann
我已经添加了软件包。 - user4478810
1个回答

15
使用 xUnit.net 2 时,应该使用 AutoFixture.Xunit2 而不是 AutoFixture.Xunit
在您的包列表中,您会注意到您有版本为 1.9.0.1566 的 xunit.extensions,它与 xUnit.net 2 不兼容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接