2017-05-23 4 views
1

私はJenkinsを使ってNUnitコンソールランナーを実行しています。これらのテストは、Jenkinsによって実行されるSelenium Gridに接続するので、グリッド上の空いているノードを待っている間にエージェントが餓死するのを避けるために、並列度を制限したい。エージェントとワーカースレッドの違い

これまでのところ、NUnitのagentworker threadの違いはわかりません...私はエージェントがスレッドを管理できると思っていますが、それは唯一の推測です。ありがとう:)

答えて

0

エージェントは、アセンブリのテストを実行している別のプロセスです。ワーカーはプロセス内のスレッドで、特定のアセンブリのテストを実行します。

理論的には、エージェントプロセスは複数のappdomainを持つことができ、各ドメインは複数のアセンブリを持ち、各アセンブリは複数のワーカースレッドを持つことができます。

しかし実際に行うべきことは、アセンブリごとに1つのプロセスを持つことで、複数のドメインが不要で、各プロセスが特定の数のワーカースレッドを実行してアセンブリのテストを実行することです。場合によっては、プロセスを並行して実行し、アセンブリ内で並列性を持たない方が好きかもしれません。これは、並列性を念頭に置いて設計されていないテストに変更を加えることなく動作する可能性が最も高いアプローチです。

エージェントはスレッドを「管理」しません。それらは単にプロセス内でフレームワークを実行し、フレームワークは適用した属性に応じて使用するスレッドの数を決定します。

複数のエージェントを使用すると、 v2フレームワークが並列性を認識していないため、nunit V2テストを並列に実行することができます。

+0

詳細な回答ありがとうございます!私はnunit V3を使用し、各ランナーは1つのアセンブリ(つまり1つのエージェント)を実行し、Selenium Gridを使用するアセンブリでは固定数のスレッドを使用します。 – towel

関連する問題