使用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
似乎没什么用。
有什么可能导致这个的建议吗?
在我的情况下,根据指示,事实证明这是正确的。我错误地注释了这个课程
[Collection("ProjectCollection")]
代替:
[Collection("ActorProjectCollection")]
我必须说,如果错误消息给出了更明确的错误提示,那么XUnit的依赖注入机制将会大大改进。
另一种可能失败的情况是,[CollectionDefinition]
是在执行测试程序集之外的类型上定义的。属性本身需要在其中定义,否则xUnit不会将其拾取。
当我的情况下连接到本地Mongo服务器时,由于某些其他问题导致fixture类的构造函数失败,可能会出现此异常。
要么寻找其他的失败并先解决它们,要么减轻你的构造函数,以免造成更少的失败。
在添加了Collection
和CollectionDefinition
装饰器之后,它发生在我身上几次,我总是在网上看到这个答案。
但在我的情况下,问题只是在测试它是否有效之前似乎需要一个“清洁解决方案”动作。没有清理解决方案我总是得到一个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)]
/// ...