控制台运行器无法在我的F#项目中发现测试.该项目的代码可以在这里找到:
https://github.com/valainisgt/FsXunitExample
这是我正在运行的命令(来自repo的根目录):
packages\xunit.runner.console.2.3.1\tools\net452\xunit.console.exe Library1\bin\Debug\Library1.dll
Run Code Online (Sandbox Code Playgroud)
以下是结果:
xUnit.net Console Runner (64-bit Desktop .NET 4.0.30319.42000)
Discovering: Library1
Discovered: Library1
=== TEST EXECUTION SUMMARY ===
Library1.dll Total: 0
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
您的测试是一个值,而不是一个函数.在程序开始时(粗略地说),值初始化一次.另一方面,函数在每次调用时执行.
Xunit要求测试是函数(在.NET术语中,"方法"),以便它可以在发现之后执行它们.
在F#中,函数因参数的存在而与值不同:如果您有参数,那么您就是一个函数; 否则,你是一个价值观.要使测试成为一个函数,只需给它一个unit参数:
[<Fact>]
let trueIsTrue () =
let actual = returnsTrue ()
Assert.True(actual)
Run Code Online (Sandbox Code Playgroud)
这样的函数将在IL中表示为无参数静态方法,这是Xunit认可的测试.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |