控制台运行器无法在我的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
这里发生了什么?
答案 0 :(得分:5)
您的测试是值,而不是功能。在程序开始时(粗略地说),值被初始化一次。另一方面,函数在每次调用时都会执行。
Xunit要求测试是函数(在.NET术语中,"方法"),以便它可以在发现后执行。
在F#中,函数与参数的存在不同:如果你有参数,你就是一个函数;否则,你就是一个价值观。要使测试成为函数,只需给它一个unit
参数:
[<Fact>]
let trueIsTrue () =
let actual = returnsTrue ()
Assert.True(actual)
这样的函数将在IL中表示为无参数静态方法,这是Xunit认可的测试。