f# - 未发现 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
这里发生了什么?
解决方案
您的测试是一个值,而不是一个函数。值在程序启动时被初始化一次(粗略地说)。另一方面,函数在每次调用时都会执行。
Xunit 要求测试是函数(在 .NET 术语中,“方法”),以便它可以在发现后执行它们。
在 F# 中,函数与值的区别在于参数的存在:如果你有参数,你就是一个函数;如果你有参数,你就是一个函数。否则,你就是一个价值。要使您的测试成为一个函数,只需给它一个unit
参数:
[<Fact>]
let trueIsTrue () =
let actual = returnsTrue ()
Assert.True(actual)
这样的函数将在 IL 中表示为无参数的静态方法,这是 Xunit 将其识别为测试的方法。
推荐阅读
- javascript - 如何使用 CSS 网格编写 4 个图表(尝试使用 chart.js)
- php - 请求Ajax成功后刷新表
- git - Git:是否接受远程 repos .gitignore 文件中存在的文件的推送更改?
- javascript - 如何在剑道图表中自定义类别字段文本
- c++ - 谓词和/或谓词数据成员和/或成员函数如何在 C++ 中工作?(elem.*predicator)() 在以下代码段中做了什么?
- image - 轮播单项组件中的图像 src。Vue + nuxt
- python - 正则表达式从字符串中提取地址街道
- javascript - 如何从 ExtJS 中的引用中获取价值
- mongodb - 连接来自不同集合的相同 ID 的 MongoDB 数组
- ios - 静态和动态数据源模型