未发现F#XUnit测试

时间:2018-05-02 23:51:35

标签: f# xunit

控制台运行器无法在我的F#项目中发现测试。该项目的代码可以在这里找到:

https://github.com/valainisgt/FsXunitExample

这是我正在运行的命令(来自repo的根目录):

packages\xunit.runner.console.2.3.1\tools\net452\xunit.console.exe Library1\bin\Debug\Library1.dll

以下是结果:

xUnit.net Console Runner (64-bit Desktop .NET 4.0.30319.42000)
  Discovering: Library1
  Discovered:  Library1
=== TEST EXECUTION SUMMARY ===
   Library1.dll  Total: 0

这里发生了什么?

1 个答案:

答案 0 :(得分:5)

您的测试是,而不是功能。在程序开始时(粗略地说),值被初始化一次。另一方面,函数在每次调用时都会执行。

Xunit要求测试是函数(在.NET术语中,"方法"),以便它可以在发现后执行。

在F#中,函数与参数的存在不同:如果你有参数,你就是一个函数;否则,你就是一个价值观。要使测试成为函数,只需给它一个unit参数:

[<Fact>]
let trueIsTrue () =
    let actual = returnsTrue ()
    Assert.True(actual)

这样的函数将在IL中表示为无参数静态方法,这是Xunit认可的测试。