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 - 提高你的代碼
相關問題