問題タブ [nunit-3.0]
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.
c# - NUnit 3: テストの並列実行を禁止する
私は最新の NUnit(3.2.0) をインストールしており、すべてのテストを並行して実行しています。望ましい動作のように見えるかもしれませんが、私はそれを求めていませんでした。実際、私のテストのいくつかが壊れました。スレッドに依存するいくつかの初期化が[OneTimeSetUp]
あり、NUnit にテストを順番に実行させるために何もできないようです。ドキュメントを読んだところ、デフォルトではテストは並行して実行されないと書かれていますが、実際には並行して実行されています。
さらに、次の属性を追加しようとしました: [assembly: Parallelizable(ParallelScope.None)]
— 運が悪い。
この動作を変更する方法を知っている人はいますか?
PS ReSharper で実行しましたが、MSVS アドインでも試しました。
UPD: MVVM Light DispatcherHelper.Initialize()
(内部[OneTimeSetUp]
) を使用して、後でいくつかのテストで使用されるディスパッチャー オブジェクトを格納しています。スレッドが (テストとセットアップ メソッドの間で) 異なる場合、テスト中のアクションが非同期で実行され、テストが失敗します。
さまざまなテストでスレッド ID を確認しましたが、それらはすべて異なります。
UPD2:ドキュメントからの抜粋:
NUnit 3.0 フレームワークは、アセンブリ内でテストを並行して実行できます。これは、Engine Parallel Test Execution とは完全に別の機能ですが、同じテスト実行で両方を使用することは可能です。
デフォルトでは、並列実行は行われません。属性は、並行して実行できるテストと、他のテストとの関係を示すために使用されます。
明示的に指定されるまで、アセンブリ内のテストを並行して実行してはならないという意味ではない場合、それはどういう意味ですか? [assembly: Parallelizable(ParallelScope.None)]
テストの並列実行に影響しないのはなぜですか?
UPD3:
質問への回答は以下にあるかもしれませんが、(私のように) に行き詰まっている場合は、DispatcherHelper.Initialize()
この初期化を から削除OneTimeSetUp
し、ディスパッチャーを使用するすべてのテストに次の行を追加する必要があります。
nunit - NUnit 3.2: コンパイル後の自動実行テスト (Windows)
新しい VS ソリューションでは、NUnit 3.2 の使用を開始しました。古いバージョン (2.6) には外部の NUnit GUI があり、アセンブリを監視し、変更に対してテストを自動的に実行することができました。しかし、ドキュメントでもGoogleでも、3.2でこれに似たものを見つけることができません。
NUnit.3.2.0.msi をインストールしました。プロジェクト用に VS + NUnit3.2 nuget パッケージに NUnit3 Test Adapter もインストールしました。
VS のテスト エクスプローラーを使用して、すべてのテストを簡単に実行できます。しかし、それらを自動的に実行する方法がいくつかありません。誰でも方法を知っていますか?
c# - /domain=multiple で実行すると、NUnit 3.2.0 コンソール ランナー System.NullReferenceException が発生する
NUnit Console Runner で/domain=multipleを指定して実行すると、NullReference 例外が発生します。
/domain=multiple または /domain=single を指定せずに実行すると動作します。「Use Seperate AppDomain」設定をオンにしてReSharper 10.0.2テストランナーを使用して実行すると、希望どおりに機能し、テストアセンブリが並行して実行されます。
コンソール ランナーを使用して、複数のアセンブリからパラメーター化されたテストを並行して実行できるようにしたいと考えています。これには静的アセットを並行してロードする必要があるため、テストは複数の AppDomains で実行する必要があります。
問題を再現するための簡単な単体テスト ソリューションを作成しました。2つのプロジェクトがあります。それぞれに、次のような 1 つのテスト クラスがあります。
コンソールの結果は次のとおりです。
travis-ci - Travis CI が NUnit 3 Console Runner を実行できない
Travis CI を使用してリモート ビルドをセットアップしました。ここに私の設定ファイルがあります:
ただし、これを実行すると、次の例外が発生します。
この例外は、テストのためにロードしようとするすべての DLL に対して繰り返されます。Travis CI のドキュメントによると、パスでワイルドカードを使用できるはずで、正常に動作します。ただし、それが問題を引き起こしているか、その他の問題により、Travis がインストールしたばかりの exe を認識できていません。誰もこれに対する解決策を知っていますか? NUnit のバージョンをハードコーディングしたくありません。可能な限り最新のバージョンを使用したいと考えています。
更新バージョンをハードコーディングしても役に立ちませんでした-3.2.0に設定しても、同じエラーが発生します:
これを生成します:
c# - Mono での NUnit と Task Parallel Library の競合
Mono で NUnit と TPL を組み合わせると、奇妙なクラッシュが発生します。コードは次のとおりです。
次の NuGet パッケージを追加しました。
したがって、このコードを Windows 10 (.NET 4.6.1) で実行すると、プログラムは「Mono is bad.」と出力します。クラッシュすることなく。
Visual Studio 2015 でコンパイルし、モノを使用して Linux でテストしています。これを Linux (OpenSUSE 13.2) で実行すると、次のスタック トレースが表示されます。
私が使用しているMonoのバージョンは次のとおりです。
奇妙な修正 #1 次の行をコメントアウトすると、プログラムは Linux/mono 上で正常に動作します。
奇妙な修正#2
ここで、コードを元のままにしておくとしましょう (_filterService
行はコメントされていません)。作業ディレクトリ内の単一の .dll ファイルを削除すると、クラッシュは発生しません。元のファイルをお見せしましょう:
を削除するSystem.Threading.Tasks.Dataflow.dll
と、プログラムは再び正常に動作します。Windows ではこの問題は発生せず、私が説明するどのような状況でも問題なく動作します。問題があるのはmono / Linuxだけです。
このサンプル コードでは Tasks.Dataflow (TPL) を実際に呼び出しているわけではないので、これは私にとって非常に奇妙です。誰かがここで何が起こっているのかを明らかにできますか?
c# - NUnit 3.0 用の nunit-console-runner.dll はありますか?
NUnit 2.6.4 には、次のように C# アプリで使用できる nunit-console-runner.dll ファイルが含まれていました。
しかし、この dll は 3.0 にはありません。ありますか?そうでない場合、同じコマンドを使用してプログラムで NUnit テストを実行するにはどうすればよいですか?
c# - コンソール ランナーから複数のアセンブリから NUnit3 テストを並行して実行する
NUnit 3 コンソール ランナーを使用して、複数のアセンブリからパラメーター化されたテストを並行して実行できるようにしたいと考えています。重要なのは、静的初期化子を並行して実行できるようにしたいということです (テストの遅い部分)。
VisualStudio で ReSharper 10 テスト ランナーを使用して、これを機能させることができます。NUnit 3 コンソール ランナーで同じプロジェクトを実行すると、静的初期化子が並列で実行されません。
問題を再現するための簡単な単体テスト ソリューションを作成しました。2つのプロジェクトがあります。各プロジェクトには、以下のクラスのようなテスト クラスが 1 つあります。テストがコンソール ランナーから並行して実行されないことを示すログを追加しました。
コンソールランナーの結果: