問題タブ [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# - F# で NUnit を適切に使用するには?
私はユニットテストに固執しました。次のソースコードがあります。
一般的には問題なく動作します....しかし、[]関数はありません。次の例外が発生しました: 結果メッセージ: SetUp または TearDown メソッドの署名が無効です: テスト前に実行
なぜ誰かが答えを知っていますか?そして2番目の質問は、型定義なしでユニットテストを書くことは可能ですが、SetUp関数も機能していますか? つまり、次のようになります。
再び、以前と同じ例外が発生しました
f# - F# モジュール メンバーが初期化されていません
VS2015 Ultimate CTP 用の NUnit テスト アダプターを使用して、FsUnit と NUnit を使用して F# で単体テストを作成しています。モジュール メンバーが null であるという奇妙な問題に遭遇しました。
これはコードの問題ですか、それともテストの実行方法ですか?
のシグネチャFoo.SpecificFooStrategy.create
をunit -> FooStrategy
( let create = fun () -> ...
) に変更して as を呼び出してみましたが、うまくいきませFoo.SpecificFooStrategy.create ()
ん。
コード
テスト
unit-testing - テスト対象の型が ToString をオーバーライドする場合、TestCaseSource テストを実行できません
まず、F# でのテスト セットアップを示します (NUnit の上に FsUnit を使用)。
このテストは実行され、期待どおりに合格します。ただし、ToString
オーバーライドを変更して呼び出しを含めるとGuid.ToString()
、テストが実行されなくなります。
上記の変更により、テストは引き続きテスト エクスプローラーに表示されますが、実行されません。それを右クリックして [選択したテストを実行] を選択しても、テストは実行されません。ビルド エラーは報告されません。
DateTime.ToString()
の代わりにを使用して実験しましGuid.ToString()
たが、それも実行を拒否します:
テスト対象の型のオーバーライド内でGuid.ToString()
orを呼び出すと、テストが実行されないのはなぜですか?DateTime.ToString()
ToString
f# - Visual Studio の F# で fsunit.xunit テストを検出して実行するにはどうすればよいですか?
単体テストは初めてですが、(VS2015 の新規インストールで) F# で xunit を試してみたいと思っています。新しいライブラリを作成し、実行しました:
...そして、テストを作成できます:
、しかし、右クリックして「テストの実行」を実行すると、テストが見つかりません。
拡張機能を検索すると、オンライン検索結果に「xUnit.net runner for Visual Studio」がありますが、「もう必要ありません。この拡張機能をアンインストールしてください」と表示されます。だから私はそれをインストールしたくありません。
テストを検出して実行できるようにするために何が欠けていますか?
f# - 単体テストとして実行されたプロパティ テストは、実際には合格しても失敗します
単体テストとして実行しているプロパティ テストは、実際には合格しているものの、失敗しているようです。
コードは次のとおりです。
概要:
テスト名: 2 つの数値を加算すると、結果はパラメーターの順序に依存しないはずです
Test FullName: Tests.Units.2 つの数値を加算すると、結果はパラメーターの順序に依存しないはずです
テスト結果: 失敗
Result StackTrace: at FsUnit.TopLevelOperators.should[a,a](FSharpFunc`2 f, ax, Object y) in d:\GitHub\FsUnit\src\FsUnit.NUnit\FsUnit.fs:line 44
Tests.Units.When で 2 つの数値を追加すると、結果はパラメーター order() に依存してはなりません
結果メッセージ: 予想: 真ですが、そうでした
結果 StandardOutput: OK、100 個のテストに合格しました。
私はこれを正しく読んでいますか?
私は何が欠けていますか?
f# - MathNet Numerics を正常にビルドするには、FsUnit.CustomMatchers が必要です。オプションを使い果たしました
単体テスト用の DLL をインストールする必要があるものを使用して、 GitHubMathNet Numerics
からの最新バージョンをビルドしようとしています。Visual Studio Community 15
MathNet.Numerics.sln
したがって、Visual Studio 内から NuGet を使用すると、以下を正常にインストールできます。
残っている唯一の DLL は
私は見つけることができません。
ヒントは ですが、の下にディレクトリ..\..\packages\test\FsUnit\lib\FsUnit.CustomMatchers.dll
がありません。test
packages
これを正しく解決するにはどうすればよいですか?
DLL は必要ですか? 必要な場合はどこにありますか?
手動でコードを修正する必要がありますか?
ヒントを更新する必要がありますか?
TLDR;
欠落している DLL なしでビルドすると、基本的なエラーは次のようになります。
インストールすることで解決できます
と追加
の署名がある
しかし、それは正しい DLL ( Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
vs FsUnit.CustomMatchers
) をインストールしないため正しくありません。また、過去の F# ユニット テストの経験から、そのようにすることで誤検知を可能にする字幕があることを認識しています。
編集:
インストールに成功した後、これがどこに文書化されているか知りたいと思いました。
参照: Math.NET 数値の構築
unit tests
、ドキュメント、API リファレンス、NuGet および Zip パッケージを含む完全に自動化されたビルドは、FAKE を使用しています。
visual-studio - FsUnit が定義されていません
最近F#を勉強しています。今日、私はいくつかのコードを書き、単体テストを追加しようとしました。
コード用とテスト用の 2 つのプロジェクトを作成する予定でした。
そこで、Visual Studio 2015 CommunityDataLab
というプロジェクトで呼び出される新しいソリューションを作成しました。Source
次に、 という別のプロジェクトを追加しましたTest
。
構造は次のようになります。
Queue.fs
は:
QueueTest.fs
は:
open
その後、VS は のステートメントについて警告しましたQueueTest.fs
。3つのうちの1つは次のとおりです。
名前空間またはモジュール 'FsUnit' が定義されていません
Source
そのため、プロジェクトのプロジェクトへの参照を追加しましTest
た。プロジェクトFsUnit
用のNuGet経由でもインストールしました。Test
NUnit
に依存しているため、インストールしませんでしFsUnit
た。
また、ライブラリをテストする必要がないため、プロジェクトFsUnit
用にインストールしませんでした。MavenのJUnit依存関係
と同じようにしたかったのです。Source
Source
<scope>test</scope>
ソリューション全体を正常に構築しました。
「テスト エクスプローラー」でテストを実行すると (「NUnit3 テスト アダプター」拡張機能もインストールしました)、以下のエラーが発生しました。
いくつかのランダムな試行の後、プロジェクトにもインストールFsUnit
することでテストが正常に実行されました。Source
私はこの問題について理論を持っています。
FsUnit 2.0.0
の依存関係を持つものをインストールしましたFSharp.Core (>= 3.1.2.5)
。私のプロジェクトFSharp.Core 3.1.2.5
にもインストールされています。そして、これは私のファイルをTest
汚染しました。Test.fsproj
以下の行がありますTest.fsproj
:
一方、Source
プロジェクトはまだ VS 2015 組み込み F# を使用しており、そのバージョンは 4.0+ です。したがって、F# の 2 つのバージョンが競合します。
しかし、それを証明する方法や修正する方法がわかりません。
f# - 関数パラメーターを取る関数をテストするときの MissingMethodException
FsUnit 2.1 (NUnit 3.2 を使用) を使用して、F# プロジェクトのテストを作成しています。以下は単純なモジュールです。
そして、ここに私のテストがあります:
2 番目のテストは (NCrunch および ReSharper で) 次のメッセージで失敗します。
System.MissingMethodException : Method not found: '!!0 Library1.LibraryFunctions.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,!!0>)'.
テスト対象のモジュールを (別の VS プロジェクトではなく) テストと同じコード ファイルに配置すると、テストは成功します。私の疑いでは、これは NUnit と F#/C# の相互運用性の問題によるものです。もしそうなら、どうすれば解決できますか?