带有NUnit AutoMoq的AutoFixture可防止测试运行
更新: AutoFixture团队在3.51版中对此进行了测试 只需扩展带有NUnit AutoMoq的AutoFixture可防止测试运行,nunit,moq,autofixture,automoq,Nunit,Moq,Autofixture,Automoq,更新: AutoFixture团队在3.51版中对此进行了测试 只需扩展AutoDataAttribute即可: public class AutoDataFixedNameAttribute : AutoDataAttribute { public AutoDataFixedNameAttribute() { this.TestMethodBuilder = new FixedNameTestMethodBuilder(); } } 然后在NUnit测
AutoDataAttribute
即可:
public class AutoDataFixedNameAttribute : AutoDataAttribute
{
public AutoDataFixedNameAttribute()
{
this.TestMethodBuilder = new FixedNameTestMethodBuilder();
}
}
然后在NUnit测试中使用此新属性,而不是内置的AutoData
从v4开始,此行为是默认行为
以前的帖子 我正在尝试将AutoFixture与NUnit和Moq一起使用,使用以下AutoMoqData属性:
public class AutoMoqDataAttribute : AutoDataAttribute
{
public AutoMoqDataAttribute()
: base(new Fixture().Customize(new AutoMoqCustomization()))
{
}
}
但当我运行此测试时:
[Test, AutoMoqData]
public void Test(Mock<IUser> user)
{
// do stuff with 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的建议,我。VisualStudio测试运行程序复制
这看起来像是NUnit Visual Studio测试适配器的问题。当我将软件包添加到复制解决方案中时,我可以重现该问题
我还假设test类具有[TestFixture]
属性,因此整个repro类如下所示:
[TestFixture]
public class Tests
{
[Test, AutoMoqData]
public void Test(Mock<IUser> user)
{
Assert.NotNull(user);
}
}
TestDriven.Net有时对测试代码中的小错误非常宽容,因此这本身可能并不能说明问题
NUnit 3控制台转轮
由于TestDriven.Net在其接受的内容上可能过于自由,所以更好的测试是尝试以下内容:
这也成功地执行了测试
临时结论
由于官方控制台运行程序和TestDriven.Net都成功地执行了测试,因此我初步得出结论,这似乎是NUnit3TestAdapter包中的一个缺陷。我可以建议你提交一个问题吗?你读过这篇文章了吗非常感谢你的回答,我马上测试一下,然后提交一个问题。出于好奇,是否可以在MSTests中使用某种类型的AutoMoqDataSattributes?我找不到这方面的信息。谢谢@X.L.Ant AFAIK,MSTest没有扩展点。除非这种情况最近有所改变,否则你问题的答案是:不,我怀疑smth是这样的。非常感谢。@Charlie我是AutoFixture和AutoMoq的原始作者。此特定功能适用于xUnit.net 2,甚至适用于Visual Studio测试运行程序。我不再是AutoFixIt的维护者,所以我不能说当前维护人员将如何评估这种情况,但是鉴于XUNIT.NET证明可以用VisualStudio测试转接器进行这项工作,我会认为这是NUngs.测试适配器的一个缺陷。这是软件开发中发生的事情,尤其是集成软件。我并不是想暗示有人因为这个问题而变得不专业,或者是糟糕的程序员。然而,FWIW很难仅限于自动夹具。至少FsCheck和Hedgehog也会生成随机测试值。可能还有其他人。。。
<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" />
[TestFixture]
public class Tests
{
[Test, AutoMoqData]
public void Test(Mock<IUser> user)
{
Assert.NotNull(user);
}
}
------ Run test started ------
NUnit Adapter 3.7.0.0: Test execution started
Running all tests in C:\Users\mark\Documents\Stack Overflow\44564377\44564377\bin\Debug\Ploeh.StackOverflow.Q44564377.dll
NUnit3TestExecutor converted 1 of 1 NUnit test cases
NUnit Adapter 3.7.0.0: Test execution complete
Test adapter sent back a result for an unknown test case. Ignoring result for 'Test(Mock<Ploeh.StackOverflow.Q44564377.IUser:8e33>)'.
========== Run test finished: 0 run (0:00:01,1763498) ==========
------ Test started: Assembly: Ploeh.StackOverflow.Q44564377.dll ------
1 passed, 0 failed, 0 skipped, took 0,79 seconds (NUnit 3.7.1).
$ packages/NUnit.ConsoleRunner.3.6.1/tools/nunit3-console.exe 44564377/bin/Debug/Ploeh.StackOverflow.Q44564377.dll
NUnit Console Runner 3.6.1
Copyright (C) 2017 Charlie Poole
Runtime Environment
OS Version: Microsoft Windows NT 10.0.15063.0
CLR Version: 4.0.30319.42000
Test Files
44564377/bin/Debug/Ploeh.StackOverflow.Q44564377.dll
Run Settings
DisposeRunners: True
WorkDirectory: C:\Users\mark\Documents\Stack Overflow\44564377
ImageRuntimeVersion: 4.0.30319
ImageTargetFrameworkName: .NETFramework,Version=v4.6.1
ImageRequiresX86: False
ImageRequiresDefaultAppDomainAssemblyResolver: False
NumberOfTestWorkers: 4
Test Run Summary
Overall result: Passed
Test Count: 1, Passed: 1, Failed: 0, Warnings: 0, Inconclusive: 0, Skipped: 0
Start time: 2017-06-15 11:09:21Z
End time: 2017-06-15 11:09:22Z
Duration: 0.933 seconds
Results (nunit3) saved as TestResult.xml