問題タブ [fsunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - FsUnit と浮動小数点数の等価性のチェック
FsUnit を使用して F# コードをテストし始めました。これにより、F# スタイルでアサーションを表現できます。たとえば、次のようになります。
FsUnit から取得した「23 に等しい」ことに注意してください。FsUnit がそれを定義する方法は次のとおりです。
let equal x = new EqualConstraint(x)
浮動小数点数では、それほど単純ではありません。Within メソッドで EqualConstraint を使用する必要があります。自然に C# に適合します。
もちろん、F# で書けるようになりたいです:
しかし、それはうまくいきません。私は新しい関数を定義することになりました:
または、精度をパラメータ化したい場合は、2 番目の引数として指定できます。
しかし、それらのどれもきれいではありません。「with」関数を F# のより自然な方法で定義して、equal と一緒に使用できるようにしたいと考えています。F# はメソッドのオーバーロードをサポートしていないので、"equal" を単独で、または "within" と組み合わせて使用できるように定義することはできないようです。
何か案は?
unit-testing - VisualStudioからfsUnitテストを実行する
そこで、VisualStudioで最初のfsUnitテストを作成しました。これはNUnitフレームワークの単なる拡張であり、C#でTDDを実行することからNUnitを使用しています。c#でテストを記述している間、Visual Studioからテストを実行することはできますが、VSからf#テストを実行することはできません。どうしてこれなの ?テストを(外部で)実行するために使用できる他のツールはありますか?
unit-testing - F#で使用できる単体テストフレームワーク
私は特に、言語の独自の機能を利用できるフレームワークを探しています。私はFsUnitを知っています。他に何かお勧めしますか、そしてその理由は何ですか?
f# - 差別された組合の比較
私は F# の初心者で、FParsec をいじっています。FParsec を使用して AST を生成します。FsUnit を使用して、パーサーのさまざまな部分に関するいくつかのテストを作成し、正しい操作を保証したいと考えています。
構文に少し問題があります(申し訳ありませんが、正確なコードは機能しています。後で特定の例を投稿できます)、2つの識別された共用体(1つは予想され、もう1つは実際の結果)を正確に比較するにはどうすればよいですか?誰かが FsUnit (または NUnit) を使用した小さなコード例を提供してくれませんか?
判別共用体の例 (非常に単純)
f# - FsUnitでテストクラスを作成する場合、[]はメンバーの有効な属性ではありません。なんで?
私は新しいF#プロジェクト(まだ多くは作成していません)をいじっていて、TDD方式でそれを行うことを目指しています。したがって、C#プロジェクトでNUnitを使用した経験が豊富で、使用するのはかなり一般的なフレームワークのように思われるため、FsUnitの使用に慣れようとしています。
私のコードは次のようになります。
私の知る限り、これはFsUnitホームページ(http://fsunit.codeplex.com/)の例に従いますが、コンパイラーは、[<Test>]
これはこの言語要素の有効な属性ではないと言っています。メンバーを意味します。
私がここで間違っていることについてのヒントはありますか?
ありがとう!
f# - FsUnitで一部をアサートする
関数が返されることを確認しようとしていますSome(x)
すべてが機能しません。私はむしろ使用したくない:
誰かがこれを行う方法を知っていますか?
f# - F#の完全な構文を使用してFSUnitテストを停止するにはどうすればよいですか?
ユニットテストには素晴らしいFSUnitを使用しています。これは正常に機能しますが、テストの本体では、#light構文の代わりに完全なF#構文(各行の末尾に「in」を付けるなど)を使用する必要があります。例えば:
テストの最初の行の最後にある「in」に注意してください。これがないと、テストはコンパイルされません。これは、短いテストでは問題ありませんが、長いテスト方法では問題になります。ソースに明示的な#lightを追加しようとしましたが、違いはないようです。これは、多くのモジュールを含む大規模なプロジェクトの一部であり、テストモジュールを除くすべてのモジュールがlight構文を(明示的な#lightなしで)うまく使用しています。テストモジュールで完全な構文をトリガーするものは何ですか?
f# - FsUnit の例でのエラー
この例を FsUnitプロジェクト ページからコピーしました。
F# で次のエラーが表示されます。
エラー 2 この式は bool 型を持つことが期待されていましたが、ここでは Constraints.EqualConstraint 型を持っています
エラー 1 タイプ 'bool' はタイプ 'Constraints.Constraint' と互換性がありません
私は何を間違っていますか?
unit-testing - FsUnitでメンバーの同等性を一覧表示します
順序に関係なく、2つのリストのメンバーが同じであることを確認したいと思います。
現在、私はこれを次のようにテストで使用しています。
ただし、これはエラー報告にはあまり適していません。
FsUnitを拡張して、またはにmemberEquals
類似したものを追加できますequals
かcontains
?または、リストを比較する前に、常にリストを並べ替えることもできます。ここでの最善のアプローチは何ですか?
(私はFsUnitとnUnitを使用していますが、その価値はあります。)
f# - F# プロジェクトでの FsUnit、NUnit 参照
Visual Studio 2012 にソリューションがあります。これには、テスト用の 2 つのプロジェクトが含まれています。1 つは F# で、もう 1 つは C# です。NUnit と FsUnit を Nuget パッケージとしてインストールしました。インストール後、これらのアセンブリへの参照は、ソリューション内dll
の\packages\
フォルダーにある を指しています。ソリューションをコンパイルした後、F# プロジェクトの参照が変更され、C:\Program Files (x86)\
フォルダーと\bin\Debug\FsUnit.NUnit.dll
F# プロジェクトにインストールされている NUnit がポイントされます。C# プロジェクトでは、参照は packages フォルダーを指し続けます。
プロジェクトは Visual Studio でビルドされ、テストは正常に実行されます。TeamCity でビルドすると、F# プロジェクトで NUnit と FsUnit が見つからないため失敗します。
コンパイル時に参照が変更される理由はありますか?
さらに、F# プロジェクトの参照のプロパティに含まれる情報が、C# プロジェクトの参照のプロパティに比べてはるかに少ないのはなぜですか?