3

싶습니다 테스트가 실패 할 때 스크린 샷을 UiAutomator해야합니다. , 캐치되지 않는 예외 처리기 - UiAutomator

@Override 
protected void setUp() throws Exception { 
    System.out.println("Beginning setup..."); 
    testFailed = true; 
} 

@Override 
protected void tearDown() throws Exception { 
    if(testFailed) 
     getUiDevice().takeScreenshot("/sdcard/Pictures/Screenshots/failure.jpg"); 
} 

후 개별 시험이

public void testExample(){ 
    /* do stuff */ 
    testFailed = false; 
} 

처럼 작동

예외가 발생하면 아이디어가 testFailed이 false로 설정되지 않습니다 것을 : 나는 현재이 설정 한 방법과 같이이다 tearDown은 테스트 후에 호출 될 때 스크린 샷을 찍습니다.

난 정말이 문제에 더 우아한 해결책을 내 코드에 testListener, 또는 캐치되지 않는 예외 핸들러를 추가 할 수 있도록 기대했다. 그러나 UiAutomator 내가 구현하려고했던 일을 우선 자신의 캐치되지 않는 예외 핸들러를 가지고있다. 잡히지 않는 예외 핸들러를 추가 할 수는 있지만 무시됩니다.

잡히지 않은 예외 핸들러를 추가 할 수있는 방법이 있습니까? 즉, 던져진 곳과 UiAutomator의 포착되지 않은 예외 핸들러 사이의 예외를 가로 채고, UiAutomator에 따라 전달합니다.

내가 테스트 실패를 수신 할 수있는 또 다른 방법이 있나요/예외가 특별히 추가하지 않고 던져지는 그 부울 모든 테스트의 마지막에? . 대신 함수 내에서이를 넣어 분해에 getUiDevice() takeScreenshot()를 호출

답변

2

는 - 말 foo는()와 예외가 발생할 때 호출.

지금 당신이 시도의 catch 블록 및 캐치 콜 foo는에서 테스트 할 코드를 넣어(). 다소 이런 식의 -

try{ 
//add your test code here 
} 
catch(Exception e){ 
foo(); 
//and if you want to throw exception again so your current test flow is not disturbed then add 
throw e; 
} 
+0

좋은 Shivam Gupta .. 나는 같은 것을 제안하려고했다 !! –

+0

Youre A Life-Saver. 감사 :-) –

관련 문제