問題
を収集し、(ない方法で、クラスによって並列化)独自のJVM内の各テストクラスと並行して、すべてのJUnitテストを実行しますJUnitParamsRunner)はすべてルートパッケージtests
(さまざまな深さのtests
のさまざまなサブパッケージにあります)の下にあります。私は、このようなPowerMockRunnerかなどのカスタムランナーを持つ多くのJUnitテスト(の束をしました
私はパッケージtests
の下にすべてのテストを収集し、並行して、別のJVMで各テストクラスを実行したいと思います。理想的には、並列化は設定可能ですが、デフォルトのnumber_of_coresも同様に完全です。私は独自のJVMで各メソッドを実行するのではなく、各クラスを実行したいと考えています。
背景
私は私のテストの多くの注釈@RunWith(PowerMockRunner.class)
と@PowerMockRunnerDelegate(JUnitParamsRunner.class)
経由JUnitParamsと組み合わせるPowerMockを使用しています。 「OK」の時間で完了する〜9000個のユニットテストがありますが、私は8コアCPUを搭載しており、システムはデフォルトのシングルテスト一度だけのランナーで十分に活用されていません。テストを頻繁に実行すると、余分な時間が足り、実際にテストクラスを並行して実行したいのです。
残念ながら、私がPowerMockを使用している理由の一部である静的メソッドを模擬する必要があることは十分な数のテストです。私は
は、静的メソッドを模擬することを試みた何
は、同じJVMですべてを実行し、静的なモックは、すべてのインターリーブと台無しになるので、それは不可能(私の最初のソリューションでした)com.googlecode.junittoolbox.ParallelSuite
のようなものを使用することができますアップ。それとも、少なくとも私が得るエラーに基づいて私には思われる。
私はJUnitスタックをまったく知りませんが、突っ込んだ後に別のオプションを書いて自分自身を挿入しようとするかもしれないようですが、RunnerBuilder
- 私は別のものを生成することもできません。 RunnerBuilder
からのJVMプロセス、おそらくありません。私は適切な解決策は、ぼかしの仕事として生きる何らかのハーネスであると思う。
また、Androidスタジオ(Intellij's)のテストオプションをいくつか発見しましたが、利用可能なフォークオプションはmethod
しかありません。私は現在、この解決策を模索しているので、おそらく私はそれを理解するだろうが、私はまだ多くのロックを持っていないので、コミュニティに並行して尋ねると思った。
UPDATE:All in directory
(何らかの理由でパッケージオプションは、再帰的な検索をしませんでした)とフォークモードClass
を選ぶ:最後にオプションのテスト種類を使用して、すべての私のテストを収集するために、Androidのメーカー(のIntelliJ)を取得することができました。しかし、これは順次見つかる各テストクラスを実行しており、並列化に関するオプションはありません。これは私が欲しいものに近いですがなく、かなり... :(
btw興味のある人は、実行時間は平均4分45秒から平均2分3秒になりました。テストの方法がたくさんある単一のテストクラスのため、長いテールが予想通りには下がらない理由 – Creos
私はこれを答えとして受け入れていますが、より良いアイデアや洗練された答えがあれば(特にありがとうございます。 – Creos