Xunit以下构造函数参数没有匹配的fixture数据

问题描述 投票:7回答:4

使用xunit for .NET 1.0 framework net46时,我不断收到此错误。

The following constructor parameters did not have matching fixture data

我看过这篇文章:Collection fixture won't inject并按照关于收集夹具的说明进行密切关注,如下所述:

http://xunit.github.io/docs/shared-context.html#collection-fixture

似乎没什么用。

有什么可能导致这个的建议吗?

.net xunit
4个回答
10
投票

在我的情况下,根据指示,事实证明这是正确的。我错误地注释了这个课程

 [Collection("ProjectCollection")]

代替:

 [Collection("ActorProjectCollection")]

我必须说,如果错误消息给出了更明确的错误提示,那么XUnit的依赖注入机制将会大大改进。


2
投票

另一种可能失败的情况是,[CollectionDefinition]是在执行测试程序集之外的类型上定义的。属性本身需要在其中定义,否则xUnit不会将其拾取。


1
投票

当我的情况下连接到本地Mongo服务器时,由于某些其他问题导致fixture类的构造函数失败,可能会出现此异常。

要么寻找其他的失败并先解决它们,要么减轻你的构造函数,以免造成更少的失败。


0
投票

在添加了CollectionCollectionDefinition装饰器之后,它发生在我身上几次,我总是在网上看到这个答案。

但在我的情况下,问题只是在测试它是否有效之前似乎需要一个“清洁解决方案”动作。没有清理解决方案我总是得到一个The following constructor parameters did not have matching fixture data错误。

所以,我也写了这个答案,以帮助我未来的自我。


无论如何,为了避免Nikola Schou解释的问题,你总是可以使用常量来避免名称错配:

public static class Collections
{
    public const string ActorProjectCollection= "ActorProjectCollection";
}

-

[Collection(Collections.ActorProjectCollection)]
/// ...

-

[CollectionDefinition(Collections.ActorProjectCollection)]
/// ...
© www.soinside.com 2019 - 2024. All rights reserved.