4

我是 F# 新手,我打算创建新的 F# 项目,并在 Visual Studio 2008 中使用 F# 对其进行单元测试,但 Visual Studio 2008 单元测试向导没有 F# 测试项目选项(只有 C、C# 和VB 选项)。

  1. 是否可以对 F# 进行单元测试?
  2. 是否可以使用 F# 测试项目对 F# 进行单元测试?
  3. 是否可以在 Visual Studio 2008 中使用 F# 测试项目对 F# 进行单元测试?
  4. 如果 Visual Studio 2008 中没有向导,该怎么做?
4

6 回答 6

4

我发现这篇关于 f# testing with nunit 的文章(链接在这里)。然而,我确实记得还有另一种方法可以验证函数式语言代码的有效性(我使用 Clean '工作',这类似于我的单身汉的 Haskell)。只是不记得他们叫什么,我记得它更像是一个数学证明。另外,我不确定它是否适用于 F#,因为如果我没看错的话,它与 Haskell'esque 语言有点不同。

于 2009-02-08T20:17:20.297 回答
4
  1. 如果您正在生成 .NET 代码,则可以使用 nunit 对 F# 进行单元测试,只要该接口合理地兼容 CLI。
  2. Nunit 适用于 .NET 程序集,而不适用于任何特定语言。如果您可以将 [TestFixture] 属性放在一个类上,并且可以将 [Test] 属性放在特定类中的公共方法上,这会返回 void,那么 NUnit 可以运行它。
  3. 不知道。
  4. 不知道。
于 2009-02-08T21:03:27.893 回答
4

此链接描述了使用带有 F# 的 VS 测试系统。您的操作方式与使用 C# 几乎相同。

缺点是 VS IDE 显然不会自动选择它——我相信你需要使用mstest.exe从命令行运行。

编辑:哦,F# 的另一个很酷的东西是FsCheck。这允许您编写简单的测试,并让 FsCheck 系统尝试通过随机测试来反驳它们。

于 2009-02-09T18:43:30.437 回答
3

没有什么强迫您使用 F# 来测试 F#。您可以简单地使用 C#、VB 或其他 .NET 支持的语言创建单元测试程序集,并简单地引用执行测试所需的 F# 程序集。您可以像为任何其他 .NET 程序集创建单元测试一样执行此操作。

于 2009-02-08T20:32:55.657 回答
3

我不确定这是否与您的确切问题严格相关,但 Matthew Podwysocki 的博客上有一系列关于函数式语言单元测试的帖子——其中也有一些 F# 位。

于 2009-02-12T13:10:04.010 回答
2

您是在问是否可以在 F# 中进行单元测试,还是在问是否有针对它的向导?可以用任何语言进行单元测试,事实上,函数式语言是单元测试人员的梦想(我听说它是​​这样描述的。)因为一切都是静态的,并且您已经验证了所有边缘案例,您基本上已经验证了每个案例。

编辑:要回答第四个问题,请编写您自己的测试用例:

http://en.wikipedia.org/wiki/Unit_testing

于 2009-02-08T19:10:45.073 回答