4

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

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

回答

4

This link描述了使用带F#的VS测试系统。你的工作方式与C#非常相似。

不利的一点是,显然VS IDE不会自动提取它 - 我相信你需要使用mstest.exe从命令行运行。

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

2

你问是否可以在F#中进行单元测试,或者你问是否有向导?可以用任何语言进行单元测试,事实上,函数式语言是单元测试人员梦寐以求的(我听到过这样描述)。因为一切都是静态的,并且你已经验证了所有边界情况,你已经基本验证了每一种情况。

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

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

+0

我加了4个问题,请认准 – 2009-02-08 20:23:13

4

我发现这篇文章对F#的测试与NUnit的(链接here)。但我记得还有另外一种方法可以验证函数式语言代码的有效性(我与Clean一起工​​作过,与我的单身汉类似于Haskell)。只是不记得他们称之为什么,我记得它更像是一个数学证明。 另外,我不确定它是否适用于F#,因为如果我正确读取它,它与Haskell'esque语言有点不同。

3

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

+0

好吧,我并不需要它,但我想它。 – 2009-02-08 20:37:13

+0

除了从C#创建F#类型可以是极其痛苦的,除非F#代码的目的是成为一个不错的.NET OO类。 – MichaelGG 2009-02-09 18:36:34

4
  1. 如果您正在生成.NET代码,只要该接口符合CLI要求,就可以使用nunit对F#进行单元测试。
  2. Nunit适用于.NET程序集,不适用于任何特定语言。如果您可以放弃某个类的[TestFixture]属性,并且可以将[Test]属性放在特定类中的公共方法中,该类将返回void,则NUnit可以运行它。
  3. 不知道。
  4. 不知道。
3

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

  • Part 1 - xUnit框架 - HUnit
  • Part 2 - 基于性能试验 - 快速检查
  • Part 3 - 快速检查+的xUnit测试一起
  • Part 4 - 代码覆盖率
  • Part 5 - 让事情纯
  • Part 6 - 一元抽象
  • Aside - 使用类型类
  • Part 7 - 提高你的代码
相关问题