2013-12-20 6 views
3

github에서 thecodepath 자습서를 따라 Robolectric을 실행하려고합니다. 그러나 테스트를 실행할 때 eclipse는 org/robolectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.jar을 다운로드하려고합니다. 이 30+ MB .jar 파일은 정확히 무엇입니까? 튜토리얼의 파일 android.jar을 대체해야합니까?Robolectric 설치

+0

해결 했습니까? 그렇다면 대답을 선택하십시오. –

답변

7

먼저 질문 드리겠습니다 : Android 테스트 용으로 Robolectric이 필요한 이유는 무엇입니까?

그리고 답은 android.jar이 클래스 및 유틸리티 메소드 계약에만 제공된다는 것입니다. 당신은이 단지에 대해 코드를 컴파일 및 데스크탑 JVM에서 실행할 수 없다

throw new RuntimeException("Stub!"); 

: 그건 그냥 한 줄의 코드가 모든 방법이 항아리의 모든 기능과 생성자를 의미한다. 실행하려고하면 안드로이드 클래스를 인스턴스화하거나 안드로이드 유틸리티 메소드를 호출하자 마자 예외가 발생합니다.

Robolectric이이 문제를 해결하려고합니다. 처음부터 ClassLoader을 사용자 정의하고 Android 코드를 호출 할 때마다 Robolectric 구현으로 바뀝니다. 데스크톱 JVM에서 코드를 테스트 할 수있었습니다. 하지만 그것은 전체 안드로이드를 다시 구현하기가 매우 어렵습니다. 또한 장비에있는 다른 것과 비교하여 테스트 할 때 상황에 빠질 수 있습니다.

따라서 전략이 Robolectric 버전 2에서 변경되었습니다. 가능한 한 많은 Android 소스 코드를 사용하려고합니다. 처음부터 오픈 소스입니다. 그래서 테스트의 첫 번째 실행 Robolectric 다운로드 및 안드로이드 소스에서 컴파일 된 자신의 android.jar를 캐시합니다. 우리의 테스트 환경 행동이 우리가 장치에서 취한 행동에 가깝도록해야합니다.

blog, google groupRobolectric에 대해 더 자세히 읽어 보시기 바랍니다. 뿐만 아니라 슬라이드 쇼 및 YouTube에 대한 많은 프레젠테이션을 찾을 수 있습니다. 자신감이 생기 자마자 Robolectric 프로젝트에 github 프로젝트를 기탁하고 커뮤니티에 감사의 말을 전하고 싶습니다.

+0

첫 번째 실행의 일부로 다운로드 프로세스를 추가하는 것은 문제가되는 선택임을 인정해야합니다. 처음 실행하면 사용자가 오프라인 상태가 될 수 있어야합니다. 인터넷 연결 상태가 좋지 않은 곳에 앉아서이 JAR 파일을 다운로드하는 데 1 시간 정도 기다려야합니다. 나는 이미 android.jar를 로컬에 가지고 있으며 과거에는 충분했다. 한계를 이해하고 있으므로이 문제를 피하기 위해 파일을 미리 다운로드해야합니다. –

1

Robolectric을 처음 설정할 때도 동일한 문제가있었습니다. 내 문제의 이유는 내 프로젝트 src 파일이 패키지에 들어 있었다 :

com.example 

그러나 내 테스트 파일은 패키지 안에 들어 있지 않습니다. 테스트 파일을 다음 위치로 옮겼습니다 :

com.example 

문제가 해결되었습니다. 이것이 도움이되기를 바랍니다.

+0

고맙습니다. 그것은 바로이 문제입니다. –

+0

이것은 여전히 ​​내 문제를 해결하지 못합니다! 그것은 항아리를 다운로드하고 실패하는 것을 아직도 시도하고있다. 내가 놓친 게 있니? –

+0

여기에서 동일합니다. 테스트 파일을 이동해도 문제가 해결되지 않았습니다. 어떤 제안? –