2012-12-26 2 views
0

각 테스트 실행 junit 다음 테스트로 이동 후. 각 테스트 실행 후 활동이 자동으로 닫힙니다.테스트 실행 후 동결 안드로이드 junit 테스트

기능을 테스트 할 때는 정상이지만 뷰를 테스트 할 때는 정상이 아닙니다. junit이 다음 테스트를 실행하기 전에 실행 결과를 화면에서보고 싶습니다.

그래서 테스트간에 약간의 지연을 만들고 싶습니다.

public void testMyView() throws InterruptedException { 
    getActivity().runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      // viewOperations... 
     } 
    }); 
    Thread.sleep(3000); 
} 

하지만이 코드가 더럽 때문에 (나는 그런 시험을 많이 가지고 특히) 이런 식으로처럼 해달라고 :


이 내가 할 수있는 한 가지 방법입니다.

@UiThreadTest 
public void testHandleEmptyAlphabetList() throws InterruptedException { 
// view operations 
    Thread.sleep(3000); 
} 

을 :하지만


또 다른 방법은 더 나은 것 같다 그것은 UI 스레드를 차단하지만, 스레드 테스트되지 않습니다. 테스트 스레드를 차단해야합니다.

Thread.sleep(3000); 테스트 스레드에서이 코드를 별도로 실행하는 방법이 있습니까?


그래서 테스트간에 스레드 지연을 만드는 가장 좋은 방법은 무엇입니까?

p.s. 제발 추가 테스트 프레임 워크를 추천하지 마세요, 나는 내 문제를 해결 도구를 사용하여 embed 싶어요. 고맙습니다.

+0

tearDown() 메서드를 재정의하고'Thread.sleep (3000);'을 여기에 넣어보십시오. – yorkw

답변

-1

이 번거로운 단위 테스트 방법을 사용하고 Robolectric을 사용하는 것이 좋습니다. 따라서 테스트가 JVM에서 실행되므로이 ​​모든 어려운 설정을 처리 할 필요가 없습니다. View 테스트의 실행 속도와 에뮬레이터를 실행할 필요가 없다는 것에 유쾌하게 놀라실 것입니다!

+0

감사합니다. Robolectric에 대해 알고 있습니다. 하지만 내가 언급 한대로 나는 순수한 안드로이드와 junit 방법을 원한다. – pleerock

-1

실제 안드로이드 실행이 필요한 테스트에는 Robotium을 사용해보십시오. 이것은 당신의 SD 카드에 스크린 샷을 저장합니다

solo = new Solo(getInstrumentation(), getActivity()); 
[...] 
if (failure) { 
    solo.takeScreenshot(); 
} 

(WRITE_EXTERNAL_STORAGE 권한이 필요) 또는 당신이 (당신이 그것을 살펴보고 추천 할 것입니다하지만) 또 다른 테스트 프레임 워크를 사용하지 않으려면, 그저 훔쳐 스크린 샷을 찍을 때 사용되는 코드

관련 문제