完全なエンド ツー エンド テストで、2 つ以上の Java クライアント間の相互作用をテストする必要があります。
GUI がなければ、理想的には (Junit 構文) のようなものにする必要があります。
@Test
public void EndToEndTest(){
App firstApp = new App();
App secondApp = new App();
String msg = "something";
firstApp.send(msg); //this method will magically send msg to secondApp
String msgReceived = secondApp.getLastMsg();
AssertEquals(msgReceived, msg);
}
上記のコードは、「アプリ」を同じ VM で実行するため、私が望むものではありません。
私が自分で考えることができた解決策は、secondApps をインスタンス化し、そのすべての出力をファイルに書き込む偽のメインを作成し、システム コールで起動して結果を確認することでしたが、それは本当にやり過ぎのようです。さらに、そのような戦略では、GUI もテストするのが (不可能ではないにしても) 難しくなります。
ご協力ありがとうございました。