具有自定义AutoFixture.InlineAutoData的F#Theory不会显示在Test Explorer中

时间:2016-04-29 16:20:45

标签: f# xunit.net autofixture

我试图用FUnit2和AutoFixture在F#中编写一些单元测试,而我正面临一个问题。我有一个继承自InlineAutoData的自定义属性的理论,并且测试资源管理器一直告诉我没有找到测试。如果我用Fact属性替换Theory属性它仍然不起作用,但如果我删除自定义InlineData属性,则发现测试。测试用F#编写,但属性在另一个项目的C#中。

我发现这个StackOverflow问题看起来很相似,但它并没有帮助我解决我的问题:AutoFixture in F# UnitTest Project Not Displaying Unit Tests in Test Explorer

这是单元测试声明:

[<Theory>]
[<SyntaxTreeInlineAutoData("Class/SingleClass.cs", 1)>]
[<SyntaxTreeInlineAutoData("Class/MultipleClass.cs", 2)>]
[<SyntaxTreeInlineAutoData("Class/NestedClass.cs", 2)>]
let ``Inspect_WhenVariousContexts_WithSuccess`` (count, tree : SyntaxTree) = 

这是属性声明:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class SyntaxTreeInlineAutoDataAttribute : InlineAutoDataAttribute
{
    #region Constructors

    public SyntaxTreeInlineAutoDataAttribute(string sourceFile, params object[] values) 
        : base(new SyntaxTreeAutoDataAttribute(sourceFile), values)
    {
    }

    #endregion
}

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class SyntaxTreeAutoDataAttribute : AutoDataAttribute
{
    #region Constructors

    public SyntaxTreeAutoDataAttribute() : this(null)
    {
    }

    public SyntaxTreeAutoDataAttribute(string sourceFile) 
        : base(new Fixture().Customize(new SyntaxTreeCustomization(sourceFile)))
    {
    }

    #endregion
}

[编辑]

该项目是C#项目的一个端口。使用自定义属性,单元测试工作正常。这个错误只发生在用F#编写的测试中。

安装了所有内容:xUnit2,xUnit.runners.visualstudio和AutoFixture。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我可以重现这个问题,至少在我的repro中,问题是版本冲突。大多数Visual Studio测试运行程序都没有告诉您,但如果您尝试使用命令行运行程序运行单元测试,则会看到报告的实际错误。

在我的代表中,我通过将以下app.config文件添加到我的F#项目来解决问题:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="xunit.core" publicKeyToken="8d05b1bb7a6fdb6c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.3179" newVersion="2.1.0.3179" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>