更新: AutoFixture 团队在 3.51 版中发布了一个修复程序。
只需扩展AutoDataAttribute
这样做:
public class AutoDataFixedNameAttribute : AutoDataAttribute
{
public AutoDataFixedNameAttribute()
{
this.TestMethodBuilder = new FixedNameTestMethodBuilder();
}
}
AutoData
然后使用这个新属性而不是NUnit 测试中的内置属性。
从 v4 开始,此行为是默认行为。
上一篇
我正在尝试将 AutoFixture 与 NUnit 和 Moq 一起使用,使用以下 AutoMoqDataAttribute :
public class AutoMoqDataAttribute : AutoDataAttribute
{
public AutoMoqDataAttribute()
: base(new Fixture().Customize(new AutoMoqCustomization()))
{
}
}
但是当我运行这个测试时:
[Test, AutoMoqData]
public void Test(Mock<IUser> user)
{
// do stuff with user
}
测试永远不会运行。AutomMoqData 被正确命中,但测试中的代码永远不会执行,一切都结束了,没有任何警告,并显示以下消息:
Test adapter sent back a result for an unknown test case. Ignoring result for 'Test(Mock<Sandbox.IUser>)'
该测试也不会出现在测试运行器列表中。
但是如果我删除参数:
[Test, AutoMoqData]
public void Test()
{
// do stuff without user
}
一切运行良好,但如果没有传递参数,这将不太有用:)
我在这里错过了什么吗?
以下是 Nuget 包版本列表:
<package id="AutoFixture" version="3.50.2" targetFramework="net452" />
<package id="AutoFixture.AutoMoq" version="3.50.2" targetFramework="net452" />
<package id="AutoFixture.NUnit3" version="3.50.2" targetFramework="net452" />
<package id="Moq" version="4.5.3" targetFramework="net452" />
<package id="NUnit" version="3.7.1" targetFramework="net452" />
编辑: 按照@MarkSeemann 的建议,我在 Github 上提交了一个问题。