2013-03-18 4 views
2

알아 내려고 시도 중 JUnits 테스트를 특정 순서대로 실행하고 테스트 중 하나가 실패 할 경우 모든 테스트를 중단 할 수있는 방법은입니다. 여기 아래에는 간단한 액션 바 항목 테스트가 포함되어 있습니다. 모두 내가 기본적으로 확인하고 싶습니다. 빌드/테스트를 명령 줄을 통해 실행할 때이 테스트 중 하나가 실패하면 테스트를 중단하고 싶습니다. 모든 권장 사항? 당신의 JUnit을 사용하여 통합 테스트를하고 있다면JUnit 테스트 실패시 테스트 중지

public void testPreconditions() { 
    assertNotNull(instrumentation); 
    assertNotNull(mWeb); 
    assertNotNull(mActivity); 
} 

protected void setUp() throws Exception { 
    super.setUp(); 

    instrumentation = getInstrumentation(); 
    mActivity = getActivity(); 
    setActivityInitialTouchMode(false); 
    mWeb = (WebView) mActivity 
      .findViewById(com.jaisonbrooks.webview.R.id.webview_main); 
    mMockWebViewClient = new MockWebViewClient(); 
    mWeb.setWebViewClient(mMockWebViewClient); 
    mSettings = mWeb.getSettings(); 
} 

public void testThatButtonReloadWorks() { 
    final View view = mActivity 
      .findViewById(com.jaisonbrooks.webview.R.id.menu_refresh); 
    mActivity.runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      view.requestFocus(); 
      view.callOnClick(); 
     } 
    }); 
} 

public void testThatButtonForwardWorks() { 
    final View view = mActivity 
      .findViewById(com.jaisonbrooks.webview.R.id.menu_forward); 
    mActivity.runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      view.requestFocus(); 
      view.callOnClick(); 
     } 
    }); 
} 

public void testThatButtonBackWorks() { 
    final View view = mActivity 
      .findViewById(com.jaisonbrooks.webview.R.id.menu_back); 
    mActivity.runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      view.requestFocus(); 
      view.callOnClick(); 
     } 
    }); 
} 
+1

당신은 모든 테스트가 서로 독립적이어야한다는 Junit의 기본 원칙 중 하나를 위반하고 있습니다. 좋은 테스트 클래스는 임의의 순서로 실행될 수 있고 그 사이에 의존 관계가없는 테스트를 가져야합니다. – planetjones

+0

또한 http://stackoverflow.com/questions/3693626/how-to-run-test-methods-in-spec-order-in-junit4를 참조하십시오. – planetjones

+0

IBM DeveloperWorks의 [간소 한 예제] (https :// /www.ibm.com/developerworks/mydeveloperworks/blogs/amcohen/entry/stop_junit_before_you_get_into_trouble3?lang=ko) 맞춤 설정을 사용하여이를 수행하십시오. 또한 Ant를 사용하여 테스트를 실행할 수도 있습니다. Ant에서는 실패 할 경우 중단 할 수있는 Junit 작업의 특성이 있습니다. – Perception

답변

1

, 당신은 _1, _2 등 :

public void _1_testThatButton()... 
public void _2_testSomethingSecond()... 

난 당신이하는 System.exit을 (호출 할 수도있을 것 같군요) 대신에 던지는와 메소드 이름 앞에 수 예외이지만 테스트가 너무 오래 걸리는 경우 향후 테스트를 추가하는 데 나쁜 징후가 될 수 있습니다. 테스트를 추가하면 실행하지 못할 수도 있습니다.

END_LINK하면 관심있는 개미 사용하는 경우, 당신이 시도 할 수 있습니다 : How to make junit testing to stop after first failing test

1

내가 안드로이드 애플리케이션에 Junit와 테스트를 수행하지만, 웹 애플리케이션 내 경험을 바탕으로하지 않은 나는이 대답을 제안하고있다.

때 나는 그런 상황에 직면 지금, 나는 반환 형식으로 별도의 방법을 전화 할게

예 : 위의 조건 중 하나라도 실패 할 경우

public void testCheckFunctions() 
{ 
boolean returnval=false; 

returnval=test1(); 
if(returnval) 
{ 
returnval=test2(); 
} 
if(returnval) 
{ 
returnval=test3(); 
} 
} 

당신은 테스트를 종료 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. –

관련 문제