gpt4 book ai didi

unit-testing - F# UnitTest 项目中的 AutoFixture 未在测试资源管理器中显示单元测试

转载 作者:行者123 更新时间:2023-12-04 23:56:06 25 4
gpt4 key购买 nike

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

  • AutoFixture 使用最小起订量自动模拟
  • 使用 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?
    其他人可以复制这个并知道我做错了什么吗?

    最佳答案

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

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

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

    Add-BindingRedirect

    然后,您可以在 app.config 中调整生成的绑定(bind)重定向。如果您愿意,可以更具体。

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

    关于unit-testing - F# UnitTest 项目中的 AutoFixture 未在测试资源管理器中显示单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343549/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com