当前位置: 首页 > 知识库问答 >
问题:

具有自定义AutoFixture.InlineAutoData的F#理论不会显示在测试资源管理器中

纪辰沛
2023-03-14

我正在尝试使用xUnit2和自动修复在F#中编写一些单元测试,但我遇到了一个问题。我有一个带有自定义属性的理论,该理论继承自内联自动数据,测试资源管理器一直告诉我没有找到测试。如果我将“理论”属性替换为“事实”属性,它仍然不起作用,但是如果我删除自定义 InlineData 属性,则会发现测试。测试是用 F# 编写的,但在另一个项目的 C# 中是用 C# 编写的。

我发现了这个StackOverflow问题,看起来很相似,但它无助于解决我的问题:F#UnitTest项目中的AutoFixture没有在测试资源管理器中显示单元测试

以下是单元测试声明:

[<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个答案

薛滨海
2023-03-14

我可以复制这个问题,至少在我的报告中,问题是版本冲突。大多数VisualStudio测试运行程序不会告诉您这一点,但是如果您尝试使用命令行运行程序运行单元测试,您将看到报告的实际错误。

在我的repro中,我通过添加以下<code>应用程序来解决问题。将文件配置到我的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>
 类似资料:
  • 我安装了Visual Studio 2012项目和以下NuGet软件包: 使用Moq进行自动模拟的自动夹具 使用XUNIT.NET数据理论自动安装 自动夹具 最小数量 xunit.net:扩展 xunit.net:Runners xunit.net

  • 我更新了我的 Visual Studio 社区 2015(更新 3),它根本没有显示我的项目的单元测试!我试图重新安装VS,它没有改变任何东西,它还向我们显示消息“连接的服务包失败”(我不知道它是什么)。而且我无法找到如何从他们愚蠢的网站上下载旧版本的Visual Studio。我在他们的社区问了这个问题,没有人回答。帮帮我!没有测试,我就无法工作!!!

  • 当我选择“Package Explorer”选项卡时,我会得到一个巨大的空白空间,其中只有10个项目的顶部显示出来,而不是像它应该的那样出现在窗格的左侧,而是出现在右侧。很奇怪。如果我点击它,我会看到一个“problem curveed”弹出框,上面写着“一个错误已经发生。有关更多详细信息,请参阅错误日志。Could not initialize class org.container.direc

  • 我目前正在开发一个解决方案,该解决方案目前有32个UnitTests。我一直在和resharper测试跑步者一起工作--它工作得很好。所有测试都在运行,所有测试都显示了正确的测试结果。 但是,在使用Visual Studio测试资源管理器时,测试不会运行。 Test Explorer将显示所有单元测试,但是一旦单击“Run all”,所有测试都将变灰,并且不显示测试运行的结果: 所有测试类都是公共

  • 我正在使用VS2015更新3,突然测试资源管理器(用于MSTest)没有显示任何内容,它只是空的。 我没有安装任何与单元测试相关的扩展,没有NUnit的东西,没有Resharper等。显然,解决方案已经编译完毕。所有带有单元测试的解决方案都是一样的,它们都曾经在测试资源管理器中显示测试,但突然间它们都是空的。 什么不起作用: 重启 重启VS 2015 Devenv.exe /ResetSettin

  • 在VsCode中,如果我创建/删除/更改文件,文件资源管理器不会相应地更新。直到几周前,它还工作得很好,但突然它停止了,只有在我手动点击刷新按钮时才会更新。为了更好地解释这个问题,我在youtube上上传了一段20秒的视频。 这是我的VsCode版本信息: 我在macoS Big Sur 11.4(20F71)上,VsCode在我的git根存储库中打开。 任何帮助都很感激!!