2012-03-15 2 views
2

필자는 두 개의 Java 서블릿과 다양한 상호 작용이 포함 된 순차 프로세스를 시뮬레이트하는 매우 긴 통합 테스트를 수행하고 있습니다. 서블릿의 동작은 요청에 게시되는 매개 변수의 값에 따라 달라 지므로 모든 순열을 테스트하여 내 서블릿이 예상대로 작동하는지 확인하려고했습니다.긴 다단계 통합 테스트를 어떻게 중단 할 수 있습니까?

현재 내 통합 테스트라는 하나 개의 긴 기능에 "testServletFunctionality는()"즉, 이런 식입니다 :

//Configure a mock request 
//Post request to servlet X 
//Check database for expected changes 
//Re-configure mock request 
//Re-post request to servlet X 
//Check database for expected changes 
//Re-configure mock request 
//Post request to servlet Y 
//Check database for expected changes 
... 

각 구성/후/체크 단계는 코드의 약 20 라인을 가지고, 그래서를 기능이 매우 깁니다.

길고 순차적 인 반복적 인 통합 테스트를 해체하거나 구성하는 적절한 방법은 무엇입니까?

+0

이것은 무지의 주장이지만, 각 단계를 먼저 테스트 했습니까? –

+0

@ edmastermind29 글쎄, 내 단위 테스트는 별도의 클래스에 있습니다. 내 통합 테스트를 단위 테스트해야한다고 말하는거야? –

+0

@ Jeff 제 경험상 통합 테스트는 상황에 따라 A, B, C 및 D가 어떻게 반응 하는지를 확인하는 것입니다. 이 시점까지는 A, B, C 및 D 단위 테스트를 개별적으로 수행해야합니다. 당신은 부품의 합계를 테스트 한 경우 전체를 테스트 할 통합 시간이 필요합니다. 귀하의 질문에 대답하려면, 아니오. –

답변

0

통합 테스트 (IT)의 주요 문제점은 대개 설정이 매우 비쌉니다. 테스트는 일반적으로 서로에 의존해서는 안되며 실행 순서는 IT에 달려 있습니다. 테스트 # 1 (로그인)을 실행하지 않으면 테스트 2가 항상 실패합니다.

슬픈.

@Test 
public void someComplexText() throws Exception { 
    new LoginHelper().loginAsAdmin(); 
    .... 
} 

을하거나 이동 : 당신이 당신의 시험에서이 작업을 수행 할 수 있도록 특정 작업을 수행 할 도우미 개체를 구축, 여러 개의 작은 것들로 분할 긴 방법 :

이 솔루션은 생산 코드와 같은 테스트를 치료하는 것입니다 코드를 기본 테스트 클래스로 바꾼다 :

@Test 
public void someComplexText() throws Exception { 
    loginHelper().loginAsAdmin(); 
    .... 
} 
관련 문제