Junitテストを並行して実行します。私は次の問題に遭遇していますParallelComputerでJunitテストを実行しているときのコンソール出力
これらのテストは他のチームによって開発され、約2500のテストスイートがあります。テストとテストフレームワークには静的変数があります。彼らは一度に1つのスイートを実行するときにうまく動作するように書かれています。これらのテストスイートスイートを構築して実行すると、実行が完了しません。
この問題を回避するために、別のクラスローダー(一度にテストのグループ)によってテストスイートをロードする独自のテストランナーがいます。私はそれを複数のスレッドで行い、これらのスレッドのそれぞれからJunitCoreのrunメソッドを呼び出します。これは正常に動作します。このアプローチの問題は、コンソール出力が混在していることです。
私はテストスイートのコンソール出力を分離してファイルにリダイレクトできるように、この問題の解決策を探しています。
ここに私が検討している潜在的な解決策があります。別のクラスローダーでクラスをロードし、それらのクラスの "クラス"オブジェクトの配列をParallelComputerというインスタンスのJunitCore runClassesに渡すことができました。
誰かがParallelComputerを使用してテストスイートを実行しようとしましたか?コンソール出力はどのように処理されますか?
見てみましたか?各テストスレッドに異なる出力ファイルを提供できますか?テストを並行して実行することは何を意味しますが、何とか出力を単一のコンソールにシリアライズ/分離しますか?あなたが尋ねていることははっきりしていないし、あなたはほとんど十分な文脈や研究の証拠を提供していない。 –
私はまだ試していません。テストとフレームワークはstdoutに出力されます(System.out.printlnを直接使用している場合もあれば、ある種のロガーを使用している場合もあります)。それがどのように行われたかにかかわらず、テストが実行されるときにコンソール上に多くの情報が表示されます。スレッドでテストを実行しようとすると、そのすべての出力が混在します。スレッドごとにコンソール出力を分けたいParallelComputerはテストを並行して実行することになっています。しかし、私はどのようにコンソールの出力が処理されるのか分からない。私の質問は誰でもそれを試してみたのですが、もしそうなら、System.out.printlnの出力はどのように処理されましたか?これが明確になることを願っています。 – user3274614