【问题标题】:AutoFixture in F# UnitTest Project Not Displaying Unit Tests in Test ExplorerF# UnitTest 项目中的 AutoFixture 未在测试资源管理器中显示单元测试
【发布时间】:2013-05-02 16:51:31
【问题描述】:

我有一个 Visual Studio 2012 项目并安装了以下 NuGet 包:

  • AutoFixture 使用 Moq 进行自动模拟
  • 具有 xUnit.net 数据理论的自动夹具
  • 自动夹具
  • 起订量
  • xUnit.net:扩展
  • xUnit.net:跑步者
  • xUnit.net

给定以下人为的 Logger 类 (Logger.fs):

namespace FUnit

type public ILoggerContext =
    abstract member LogPath :string

type public LoggerContext (logPath :string) =
    member val LogPath = logPath with get, set

    interface ILoggerContext with
        member this.LogPath = this.LogPath

type public Logger () =
    member this.Log (context: ILoggerContext) value =
        System.String.Format("Logged {0} to {1}.", value, context.LogPath)

以及以下单元测试:

namespace FUnit.Test

open FUnit

type public Math_Add() = 

    [<Xunit.Extensions.Theory>]
    [<Ploeh.AutoFixture.Xunit.AutoData>]
    member this.``Should Output Value And Path`` (path :string) =
        let context = new LoggerContext(path)
        let logger = new Logger()

        let expected = System.String.Format("Logged value to {0}.", path)
        let actual = logger.Log context "value"

        Xunit.Assert.Equal<string>(expected, actual)

在确保显示所有测试并构建项目后,测试资源管理器无法识别单元测试。项目构建正确,在构建、常规或测试输出日志中没有错误或警告。

如果我用 Fact 属性替换当前的 Theory 和 AutoData 属性,测试就会出现。

F# 测试项目是否支持 AutoFixture? 其他人可以复制这个并知道我做错了什么吗?

【问题讨论】:

  • 我认为这与 AutoFixture 无关。更多关于测试资源管理器(顺便说一句,哪个?)无法识别 xUnit.net 测试。
  • 是的,很棒的评论。我说的是 Visual Studio 2012 中的测试资源管理器面板。我熟悉作为 TFS 套件一部分的测试资源管理器,但不认为它处理单元测试。
  • 如果您尝试在本地 xUnit.net 测试运行器之一(GUI 或命令行)中运行测试会发生什么?
  • FWIW,我已经成功地在 F# 中多次使用了包的精确组合(sans xUnit.net: Runners),所以这绝对是可能的。

标签: unit-testing f# xunit.net autofixture


【解决方案1】:

我认为这是Ploeh.Autofixture.Xunit 和测试运行程序使用的Xunit.Extensions 版本冲突的问题。

如果您使用 Xunit 的运行程序运行测试,那么您应该会看到一个异常,抱怨无法找到特定版本的 Xunit.Extensions

您可以通过将绑定重定向添加到您的测试项目app.config 来解决此问题。由于您使用的是 NuGet,因此您可以通过在包管理器控制台中为您的测试项目运行它来生成绑定重定向。

Add-BindingRedirect

然后,您可以根据需要调整 app.config 中生成的绑定重定向,使其更加具体。

重建项目后,您应该会看到测试出现在 VS 测试资源管理器中。

【讨论】:

  • 谢谢叶子。你成功了。
猜你喜欢
  • 1970-01-01
  • 2016-12-02
  • 2020-09-13
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
相关资源
最近更新 更多