AutoFixture在F#单元测试项目不显示在单元测试中测试资源管理器(AutoFixture i

2019-09-01 18:49发布

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

  • 使用起订量自动嘲讽AutoFixture
  • Autofixture与xUnit.net数据理论
  • AutoFixture
  • 起订量
  • 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)

测试浏览器确保我所展示的所有测试和建设项目后不承认单元测试。 该项目在生成,一般,或测试输出日志中没有错误或警告建立正确。

如果我取代目前的理论和研究机构Autodata与事实属性属性,测试显示出来。

是AutoFixture在F#测试项目的支持? 任何人都可以复制这一点,知道我做错了吗?

Answer 1:

我觉得这是相互冲突的版本问题Xunit.Extensions通过使用Ploeh.Autofixture.Xunit和测试运行。

如果您使用的xUnit的选手进行的测试,那么你应该看到一个异常抱怨不能够找到一个特定版本Xunit.Extensions

您可以通过将绑定重定向到您的测试项目,解决这个问题app.config 。 由于您使用的NuGet你可以把它用在Package Manager控制台运行此为测试项目生成绑定重定向。

Add-BindingRedirect

然后,您可以调整在生成绑定重定向app.config是,如果你想更具体的。

一旦你重建项目,你应该看到测试出现在VS测试资源管理器。



文章来源: AutoFixture in F# UnitTest Project Not Displaying Unit Tests in Test Explorer