すべてのテストに関して、予期しないことを計画しないでください。知っていることから始めましょう。予想外のことは、すぐに醜い頭をもたげて、他に何をテストすべきかを教えてくれます。
あなたが持っているものは、分解すれば実際に簡単にテストできます。これが私のアプローチです:
public final static String SERVER_DATA = "Prepared data from the server";
@Test
public void testServerPreparesDataCorrectly() throws Exception {
... usual setup ...
String actual = server.handleRequest( CLIENT_REQUEST );
assertEquals( SERVER_DATA, actual );
}
public final static String CLIENT_REQUEST = "...";
@Test
public void testClientRequest() throws Exception {
... usual setup ...
String actual = client.getRequestData(...);
assertEquals( CLIENT_REQUEST, actual );
}
@Test
public void testClientResponseProcessing() throws Exception {
... usual setup ...
client.parseServerResponse( SERVER_DATA );
... verify client state ...
}
等々。基本的な考え方は、各プロセス ステップの入力と出力を定数に入れ、予想される入力ごとにプロセス ステップを実装するコードを実行し、出力を検証することです。ほとんどの出力は、他のテストの入力でもあります。
何かが変更された場合は、それに応じて入力/出力を更新します。テストを実行します。また、失敗は、更新する必要があるプロセス ステップを示します。