如何使用 Xunit 运行 FsCheck

How to run FsCheck with Xunit

您好,我正在尝试 运行 FsCheck.Xunit 测试 xunit.runner.console 并得到以下异常:

Kata.TennisProperties.Given advantaged player when advantaged player wins score is correct [FAIL]
  System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
  ---- System.Exception : The type Kata.Tennis+Player is not handled automatically by FsCheck. Consider using another type or writing and registering a generator for it.
  Stack Trace:
       at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
       at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

我正在尝试关注 Mark Seemann's talk。我的设置如下:

我有一个包含两个文件的库类型项目。一份是待测代码,一份是测试代码。该项目编译得很好。我没有使用 VS IDE,而是 VSCode 带有 F# 的 Ionide 插件的文本编辑器。

我尝试过各种设置,有和没有 FSharp.Core nuget 安装,有和没有 FSharp.Core 的版本规范。

知道在哪里可以进一步观察吗?我 运行 没有想法并且感到沮丧。我已经在这上面花了两天时间。 :)

通过添加下面的 app.config 文件解决了这个问题。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <Paket>True</Paket>
      <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.4.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
</configuration>

我以前做过,但是使用 VSCode + Ionide 没有将配置文件添加到项目中。所以,非常重要的是,不要忘记将 app.config 文件也添加到项目中。仅仅在项目文件夹中创建文件是不够的。