带有NUnit AutoMoq的AutoFixture可防止测试运行

带有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测

更新: AutoFixture团队在3.51版中对此进行了测试

只需扩展
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