問題タブ [xunit2]

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.

0 投票する
1 に答える
206 参照

f# - FAKEビルドファイルのxUnit2ターゲットで「オプション」欠落エラーを取得する

サンプルの xUnit2 ターゲットを FAKE ビルド ファイルに追加すると、次のエラーが発生します。

エラー FS0001: この式には文字列型オプションがあると予想されていましたが、ここには文字列型があります

FAKE xunit2 ドキュメントのターゲットの例

Visual Studio は(testDir @@ "xunit.html")、コードのセクションを強調表示しています。

2つのパラメーターが必要であることは理解していますが、問題を解決する方法を理解するのに十分なF#をまだ知りません:

xUnit ターゲットを含める前は、私の FAKE ビルドは正常に機能していました。ビルド ファイルに追加open Fake.Testing.XUnit2しましたが、xUnit2 参照でエラーは発生しません。

どんな助けでも大歓迎です。

0 投票する
1 に答える
559 参照

xunit - XUnit ハンドル テストは、同じメソッドでクラス パラメータと小数パラメータを処理できますか?

次のシグネチャを持つテスト メソッドがあります。

これを XUnit 2.1 で実行したいと思います。CalculationData クラスをすべてセットアップしましたが、2 番目のパラメーターを削除すると機能します。しかし、次のようにして、期待される結果を2番目のパラメーターとして渡そうとすると:

うまくいきません。テストは次のエラーで失敗します。

テスト メソッドは 2 つのパラメーター値を想定していましたが、1 つのパラメーター値が指定されました。

何か案は?

0 投票する
1 に答える
744 参照

unit-testing - xUnit でテストを 2 回実行する

xUnitデスクトップランナーを持つそのソリューション内に1つのxUnitテストプロジェクト/アセンブリが構成されているソリューションセットアップがあります。

[テスト エクスプローラー] ウィンドウで [すべて実行] を実行してこのソリューションのテストを実行すると、次の出力が表示されます。

「Discover test」ステップと「Run test」ステップが実行されているように見えます。各ステップで「Discovering」ステップと「Discovered」ステップが実行されているため、それらが 2 回実行されているように見えます。

これが意図的に実行されているのか、それともどこかに誤った設定があり、この動作を引き起こしているのか、興味があります。「発見中/発見済み」は実行ごとに1回だけ発生するように思えます(または予想されるでしょう)。ご覧のとおり、各実行にさらに 2 秒が追加されているため、可能であればそれを避けたいと考えています。

0 投票する
1 に答える
724 参照

unit-testing - アプリケーションをロードできないか、コマンド 'Microsoft.Dnx.TestHost' を実行できません。利用可能なコマンド: テスト

VS2015 で ASPNET 5 アプリケーションをテストしようとしています。

ただし、テスト エクスプローラー ウィンドウにテストが表示されず、F5 キーを押すと次のように表示されます。

[Fact] で装飾されたテストが 1 つだけありますが、それほど進んでいるようには見えません。

「読み込めません」というエラーが発生する同様の質問 (ただし、TestHost に固有のものは見つかりませんでした) を見て、テスト プロジェクトとアプリケーションの両方が同じフレームワークをターゲットにしていることを確認しようとしましたが、矛盾は見つかりませんでした。 . そして、イベント ログには何も表示されません。

助言がありますか?- これをトラブルシューティングするためにどこから始めればよいかさえわかりません。

0 投票する
40 に答える
198460 参照

.net - Visual Studio 2015/2017/2019 テスト ランナーが xUnit v2 テストを検出しないのはなぜですか

更新: 2019 を追加します。ディスカバリー/ランナー統合メカニズムは 2017 および 2015 と同じであるため、問題が発生する可能性がある重要な点は同じです。


xUnit ランナーが自分のテストを見つけられない理由を読みましたが、これには xUnit がテストを見つけることができない理由が記載されていますが、私の問題は異なります。(彼らは他の環境で動作していましたが、これは私のマシンだけのようです) - Visual Studio 2015 [Community Edition] の Visual Studio Test Runner は、単に私のテストを表示していません。私はリモートでエキサイティングなことは何もしていません。テストは、デスクトップ上の xUnit.net v2 を対象としています。

[出力] ウィンドウを確認しましたが、 [タブからの出力を表示] の [テスト]の下に何も表示されません。

0 投票する
0 に答える
106 参照

dependency-injection - Xunit 1.9.1 から xunit 2.1.0 への移行 (IOC / 依存性注入)

あなたの専門家のアドバイスが必要です

背景: Xunit 1.9.1 を 2.1.0 に移行しています。次の拡張機能を使用しています - Xunit.ioc.ninject - xunit.ioc.autofac

問題: これらの 2 つはサポートされなくなりました。

質問: 交換する最善の方法/拡張機能は何ですか

0 投票する
2 に答える
442 参照

c# - ConstructorInfo.GetParameters はスレッドセーフですか?

これは、私が追跡しようとして一日を費やした非常に奇妙な問題です。これがバグかどうかはわかりませんが、なぜこれが起こっているのかについての見解と考えを得ることができれば幸いです.

xUnit (2.0) を使用して単体テストを実行しています。xUnit の優れた点は、テストを自動的に並行して実行することです。しかし、私が見つけた問題は、 がスレッド セーフ タイプであるとマークされているConstructor.GetParameters場合、スレッド セーフではないように見えることです。ConstructorInfoつまり、2 つのスレッドがConstructor.GetParameters同時に到達した場合、2 つの結果が生成され、このメソッドへの後続の呼び出しは、作成された 2 番目の結果を返します (呼び出し元のスレッドに関係なく)。

この予期しない動作を示すコードをいくつか作成しました (プロジェクトをローカルにダウンロードして試してみたい場合は、GitHub でもホストしています)。

コードは次のとおりです。

2 つのテスト クラスにより、2 つのスレッドが作成され、並行して実行されることが保証されます。これらのテストを実行すると、次のような結果が得られるはずです。

(注: 予期しない値を示すために「<---- 違います!」を追加しました。これはテスト結果には表示されません。)

ご覧のとおり、 への最初の呼び出しの結果は、GetParameters後続のすべての呼び出しとは異なる値を返します。

私はかなり長い間 .NET に興味を持っていましたが、このようなものは見たことがありません。これは予想される動作ですか?これが起こらないように.NET型システムを初期化するための推奨/既知の方法はありますか?

最後に、誰かが興味を持っている場合は、MEF 2 で xUnit を使用しているときにこの問題に遭遇しました。この問題では、辞書のキーとして使用されている ParameterInfo が、以前に保存された値から渡された ParameterInfo と同じように返されません。もちろん、これにより予期しない動作が発生し、同時に実行するとテストが失敗します。

編集:回答からの良いフィードバックの後、私は(うまくいけば)この質問とシナリオを明確にしました。問題の核心は、「スレッド セーフ」タイプの「スレッド セーフ」であり、これが正確に何を意味するかについての知識を深めることです。

ANSWER:この問題は、いくつかの要因によるものでした。そのうちの 1 つは、マルチスレッド シナリオに対する私の終わりのない無知によるものです。この領域を非常に効果的な方法で学習できるように設計されている xUnit に改めて感謝しています。

もう 1 つの問題は、.NET 型システムの初期化方法との不一致のようです。TypeInfo/Type を使用すると、どのスレッドが何度アクセスしても、同じ型/参照/ハッシュコードを取得できます。MemberInfo/MethodInfo/ParameterInfo の場合、これは当てはまりません。スレッド アクセスに注意してください。

最後に、この混乱を抱えているのは私だけではないようです。これは実際、.NET Core の GitHub リポジトリに提出された問題に関する無効な仮定として認識されています

それで、問題はほとんど解決しました。この問題に関する私の無知に対処し、この非常に複雑な問題空間を (私が発見しているのは) 学習するのを手伝ってくれた関係者全員に感謝の意を表したいと思います。

0 投票する
2 に答える
3206 参照

c# - Specflow と xUnit 2 (ITestOutputHelper) によるログ記録

残念ながら、Specflow テストはローカルで合格しましたが、VSO Build vNext サーバーでは失敗しました。何が起こっているのかを把握できるように、テストの実行中に詳細な情報を確認する必要があります。

しかし、私はITestOutputHelperそのようにSpecflowバインディングに注入しようとするのに苦労しています

public SomeSteps(ITestOutputHelper outputHelper)

しかし、Specflowはメッセージに文句を言います

BoDi.ObjectContainerException Interface cannot be resolved: Xunit.Abstractions.ITestOutputHelper (resolution path: ...)

Specflow テスト中にログを表示し、出力を表示するにはどうすればよいでしょうか?