testngを使用して並行してテストを実行しようとしていますが、設定に問題があります。testng並列テスト - クラスグループ化を避ける
私は多くのテストを含む多くのクラスファイルを持つプロジェクトを持っています。
私は現在、parallel = 'methods'フラグを使ってテストを実行しており、与えられた時間に実行されているテストの数を最大にしています。
私の目標は、同時に実行されている同じクラスのテストを避け、並列テストの数を最大限にすることです。
ですから、例えばxmlファイル与えられた:
<suite>
<test parallel='methods' thread-count=40>
<classes>
<class>Class1</class>
<class>Class2</class>
</classes>
</test>
</suite>
そして40個の利用可能なスレッドを与えられ、私は任意の時点で実行されている40回のテストを持っていると思います。
私はテストオーダーをランダム化するためにメソッドインターセプターを使用しました。私はそれが正しく動作していることを知っているEclipseデバッガーで、各クラス内で順序を制御できます。クラス2は唯一のClass1はもはや持っていないときに実行を開始
<Test from class1>
<Test from class1>
<Test from class2>
<Test from class2>
:
<Test from class1>
<Test from class2>
<Test from class1>
<Test from class2>
しかし、その代わりに、各クラスには以下のように並行して、それぞれのテストを順次実行します:
私の目標は、このような実行があります実行するテスト。
私はparallel = 'classes'を試しましたが、これはクラスごとに1つのスレッドを与えます。
ランダムな順序を強制し、並行テストの実行量を維持することは可能ですか?
ランダム化されたメソッドのリストを渡し、実行順序を大まかにその順序に従いたいとします。
クラスを別々のスイートとテストに分割しようとしましたが、クラスごとに異なるテストメソッド数を持つ40個のテストを並列に実行するという目標は達成されません。試験方法は不明である。
私の他の考えは、複数の継承を使用してクラスを結合し、各クラスのテストメソッドを1つのクラスに結合することでしたが、javaは多重継承をサポートしないため動作しません。
これを読んだり、アドバイスやヘルプを提供してくださった皆様、ありがとうございます。
編集:可能な複製をアドレッシング:
他の質問で提案された解決策は、私は複数のスレッドと並行して、クラスを実行することができますが、テストは他の人の前に終了した場合、それはそれのために割り当てられたスレッドのように見えます使用されません。
私は並列化するクラスが2つ以上あります。各テストにスレッドを与えるようになると、問題が発生する可能性があります.10クラスでは、それぞれ4スレッド(合計40並列)に制限されます。 1つのテストで4つのメソッドを一度に実行して36のアイドル状態が完了するのを待っている可能性があります。これはおそらくこのソリューションを実装することによるメリットを無効にします。
理想的なソリューションは、基本的な単一テスト/並列= 'メソッド'アプローチのようなテストのための共通スレッドプールを持っています。
[testngのクラスとメソッドを並列化する](https://stackoverflow.com/questions/37874072/parallelizing-classes-and-method-in-testng)の可能な複製 –
このメソッドを使用すると、クラスを並行して実行できます複数のスレッドでテストされますが、他のテストよりも前にテストが終了すると、割り当てられたスレッドは使用されないように見えます。 並列化するクラスが2つ以上あります。各テストにスレッドを与えることを開始すると、問題が発生する可能性があります.10クラスでは、それぞれ4スレッド(合計40並列)に制限されます。 1つのテストで36のアイドル状態で4つのメソッドを一度に実行するのを待っていることがあります。理想的なソリューションには、テスト用の共通スレッドプールがあります。 – testngthrowaway