未发现 F# XUnit 测试
F# XUnit Test Not Discovered
控制台运行程序无法发现我的 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
这是怎么回事?
您的测试是值,而不是函数。值在程序启动时初始化一次(粗略地说)。另一方面,函数在每次调用时都会执行。
Xunit 要求测试是函数(在 .NET 术语中,"methods"),以便它可以在发现后执行它们。
在 F# 中,函数与值的区别在于参数的存在:如果你有参数,你就是一个函数;如果你有参数,那么你就是一个函数;否则,你就是一个价值。要使您的测试成为一个函数,只需给它一个 unit
参数:
[<Fact>]
let trueIsTrue () =
let actual = returnsTrue ()
Assert.True(actual)
此类函数将在 IL 中表示为无参数静态方法,这是 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
这是怎么回事?
您的测试是值,而不是函数。值在程序启动时初始化一次(粗略地说)。另一方面,函数在每次调用时都会执行。
Xunit 要求测试是函数(在 .NET 术语中,"methods"),以便它可以在发现后执行它们。
在 F# 中,函数与值的区别在于参数的存在:如果你有参数,你就是一个函数;如果你有参数,那么你就是一个函数;否则,你就是一个价值。要使您的测试成为一个函数,只需给它一个 unit
参数:
[<Fact>]
let trueIsTrue () =
let actual = returnsTrue ()
Assert.True(actual)
此类函数将在 IL 中表示为无参数静态方法,这是 Xunit 识别为测试的方法。