모든 테스트에서 예기치 않은 계획을 세우지 마십시오. 당신이 알고있는 것으로 시작하십시오. 예기치 못한 상황이 발생하면 테스트 할 다른 것을 알려줄만큼 빨리 추악한 머리를 뒤집습니다.
당신이 가지고있는 것은 실제로 분해하는 것이 간단합니다. 내 접근 방식은 다음과 같습니다.
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 ...
}
등등. 기본 개념은 각 프로세스 단계의 입력과 출력을 상수에 넣은 다음 예상되는 각 입력에 대해 프로세스 단계를 구현하고 출력을 확인하는 코드를 실행하는 것입니다. 대부분의 출력은 다른 테스트를위한 입력입니다.
뭔가가 변경되면 그에 따라 입력/출력도 업데이트됩니다. 테스트를 실행하십시오. 그리고 실패는 어떤 프로세스 단계를 업데이트해야하는지 알려줍니다.