F#で単体テストを作成するにはどうすればよいですか?私は通常、[TestClass]と[TestMethod]属性を持つVisual StudioのUnitTest部分を使用し、テストビューを使用してこれらを実行します。私はスクリプトファイルを作成して実行することができますが、現在処理されている方法が好きです。F#で単体テストを扱うには?
答えて
チェックアウトfscheck。ハスケルのクイックチェックのポートです。 Fscheckでは、関数が満たさなければならないプロパティを指定し、「多数のランダムに生成されたケース」に対して検証します。
これは、C#のような必須言語では簡単にはできないことです。
Pexを見てください:http://research.microsoft.com/en-us/projects/Pex/ –
@Mauricio:私はそれが可能であることに同意しますOO設定(別の例:RANDOOP)でFsCheckが(ランダムにテストケースを生成する)何をするかを指定します。ある日、私たちは無作為に生成されたケースとPexのようなケースを生成することができる1つの仕様言語(私の非常に偏った意見では、機能的設定でははるかに良く見える)を持つことになるでしょう。 –
FsCheckはC#インターフェイスを備えているので、C#でもFsCheckの最も重要な機能を使用できます。 –
バージョン2.5から、NUnitではstatic members as testsを使用できます。また、クラスレベルのTestFixtureAttributeはonly necessary for generic or classes with non-default constructorsです。 NUnitにはbackward-compatible conventionがあり、TestAttributeを使用する代わりにテストメンバーが "test"という単語で始まるので、NUnit> 2.5の慣用的なF#を書くことができます。
更新 あなたはCashel libraryにTestFixtureAttributeせずにいくつかのテストの例を見ることができます。私はTestAttributeを使用し続けました。テストランナーがいないときにテストを正しく受け取り、NUnitポストの一部が間違っているか、少なくとも誤解を招く可能性があるからです。
Ryan、F#のサンプルテストで詳しく説明しますか?または、TestAttributeまたはTestFixtureAtrributeなしでF#単体テストを表示するサイトへのリンク? –
@David Cashelのテストへのリンクを追加しました。 –
NaturalSpecを試してみるとよいでしょう。 NUnitの上にあるF#UnitTest-Frameworkです。
私は(Visual Studioのアドインのテストを実行するため、「学生、オープンソース開発者およびトライアルユーザー」のための無料)xUnit.net、TestDriven.Netの組み合わせを使用し、私自身のオープンソースUnquoteライブラリを(もNUnitのと連動しているとその他の例外ベースのアサーションフレームワーク)。任意の場所に解凍し、
- をダウンロードしてインストールしTestDriven.Net
- ダウンロードxUnit.netとTestDriven.Net と統合するxunit.installer.exeを実行します。これは素晴らしい出て働いており、入門本当に簡単です。 UNQUOTEは、任意の場所
- に解凍
- ダウンロードは、あなたのユニットテストプロジェクトに(解凍したダウンロードから)
- がxunit.dllへの参照を追加しテストしUnquote.dllユニットのためのソリューション内のプロジェクトを作成します
次は、xUnit.net/Unquoteスタイルの単体テストを含む単体テストプロジェクトの.fsファイルの簡単な例です。
module Tests open Swensen.Unquote open Xunit [<Fact>] let ``description of first unit test``() = test <@ (11 + 3)/2 = String.length ("hello world".Substring(4, 5)) @> [<Fact>] let ``description of second unit test``() = let x = List.rev [1;2;3;4] x =? [4;3;1;2]
実行ソリューションエクスプローラでプロジェクトを右クリックし、Runテスト(複数可)を選択することによって、プロジェクトのすべてのユニットテスト。あなたは以下を使用することができますVS2013で
------ Test started: Assembly: Tests.dll ------ Test 'Tests.description of second unit test' failed: [4; 3; 2; 1] = [4; 3; 1; 2] false C:\Solution\Project\Tests.fs(12,0): at Tests.description of second unit test() Test 'Tests.description of first unit test' failed: (11 + 3)/2 = String.length ("hello world".Substring(4, 5)) 14/2 = String.length "o wor" 7 = 5 false C:\Solution\Project\Tests.fs(7,0): at Tests.description of first unit test() 0 passed, 2 failed, 0 skipped, took 1.09 seconds (xUnit.net 1.7.0 build 1540).
:前の例のテストは、Visual Studioの[出力]ウィンドウに印刷され、次で失敗するの両方。
open Microsoft.VisualStudio.TestTools.UnitTesting
[<TestClass>]
type testrun() =
[<TestInitialize>]
member x.setup() =
//your setup code
[<TestMethod>]
member x.yourTestName() =
//your test code
ヒント:UIユニットのテストをお探しの場合は、Canopyでこの設定を使用できます。
- 1. .netコアでF#プロジェクトの単体テストを行う方法はありますか?
- 2. 単体テストと単体テスト
- 3. F#で可変リストを扱うには?
- 4. CodeIgniterで単体テストを簡単に行う方法は?
- 5. 単体テストでスレッドセーフなテスト
- 6. 単体での単体テスト試験
- 7. AMP広告の単体テストと統合テストを行うには?
- 8. 単体テストUrl.Action
- 9. 単体テストMonoDroid
- 10. TableController単体テスト
- 11. 単体テストObservable.interval
- 12. 単体テストNSOperation?
- 13. 単体テスト:カスタムタイマアサート
- 14. F#でxmlを扱う方法を学ぶ良いソースF#
- 15. AngularJs単体テスト$ httpBackendは
- 16. MVVM光ディスパッチャ単体テストは
- 17. オートメーションスクリプトの単体テストを書くには?
- 18. ストップウォッチの単体テストを書くには?
- 19. 単体テストでのユニットテスト
- 20. C++での単体テスト
- 21. 私はCursesアプリケーションの単体テストをどのようにテストできますか?
- 22. 問題ユニット単体テストでのテスト
- 23. 単体テスト - ヌルリファレンスExc
- 24. ジャスミン単体テスト - オブジェクト
- 25. 単体テストBIアプリケーションカテゴリ
- 26. 単体テストRxjs 5
- 27. HSQLDB単体テスト用
- 28. 単体テストWCFメソッド
- 29. Djangoモデル単体テスト
- 30. SingleResultと単体テスト
[この最近の記事](http://fsharpnews.blogspot.com/2011/01/testing-behaviour-driven-development.html)では、これ以上のことが説明されています(F#からのBDDテスト)。 –
ここから始めることができます:http://bit.ly/1JhEbA7 –