至於所有測試,不要計劃意外。從你知道的開始。這個意想不到的事情很快就會把它變成醜陋的頭腦,告訴你還有什麼應該測試的。
如果你把它分開,你的測試其實很簡單。這裏是我的做法:
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 ...
}
等等。其基本思想是將每個工藝步驟的輸入和輸出放入一個常量中,然後運行實現每個預期輸入的工藝步驟並驗證輸出的代碼。大多數產品也是其他測試的輸入。
如果有變化,則相應地更新輸入/輸出。運行測試。而失敗會告訴你哪些流程步驟需要更新。