2013-08-20 2 views
3

우선 안드로이드에서 테스트 인프라의 부족에 대한 좌절감을 표하고 싶습니다. 아니면 어쩌면 저능아인지 모르겠지만 ...
궁극적으로는 android-test-plugin을 설정하고 나는 SupportMapFragment을 확장 한 글자 인 CustomMapFragment을 레이아웃에 포함하는 활동에 대한 몇 가지 테스트를 작성했습니다. 사용이 활동의 ​​인스턴스를 얻으려고
내 모든 테스트 : 활동의 setContentViewRobolectric 문제를 사용하여 Android Studio에서 안드로이드 테스팅

java.lang.NoClassDefFoundError: com/google/android/gms/maps/GoogleMap$OnInfoWindowClickListener

:

activity = Robolectric.buildActivity(MyActivity.class).create().get(); 


는 실패.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       tools:context=".MyActivity"> 

    <fragment 
      android:id="@+id/customMapFragment" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      class="com.myproject.CustomMapFragment"/> 
</RelativeLayout> 

이것에 대한 해결 방법/솔루션이 있습니까 :

활동의 XML

은 다음과 같다? 도움이 될 것입니다.

+1

커밋이있는 수정 프로그램을 적용하는 것입니다. Robolectric이 클래스를로드하려고 할 때 NoClassDefFoundError를 얻었 기 때문에 테스트를 실행할 수 없으므로 assertTrue (true) 테스트조차도 실패합니다. 여기에 오류가 내 질문에 http://stackoverflow.com/questions/18434217/robolectric-fails-to-run-tests-with-google-play-services-maps – alex

+0

나는 그것이 일반적인 문제라고 생각한다. 지도에 연결되었습니다. 일부 클래스에서 Google 클라우드 메시징을 사용하는 곳에서 동일한 오류가 발생했기 때문입니다. 당신을 이해하는 사람들이 있다는 것을 아는 것은 좋은 일입니다 :) 만약 누군가가 여기에 대답하면 나는 당신에게 말할 것입니다. –

+0

Google Play 서비스 의존성을 어떻게 추가 했습니까? Google 리포지토리를 사용하거나 다른 방법으로 사용 하시겠습니까? – alex

답변

2

임시 해결책이 있습니다. 문제는 android-test-plugin이 aar 파일을 읽을 수 없다는 것입니다. 내 솔루션없이, 내가 예를 위도 경도를 만들고, 그것이 null이 아니라면 확인하기위한 간단한 테스트를 실행할 수있어 이와 같이이

testCompile files('YOUR_ANDROID_SDK_FOLDER/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar') 

처럼, 대신 단지 testCompile에 jar 파일에 종속성을 추가하는 것입니다 오류. 희망이 도움이됩니다. GitHub의에 SuperJugy에

편집

더 나은 솔루션 덕분에 고객님의 불만을 공유 https://github.com/SuperJugy/gradle-android-test-plugin/commit/d5b7836cf7278dc9d0fe765b635de60c33911d72

+0

나는 이것을 시험 할 시간을 가지 자마자 당신의 대답을 받아 들일 것입니다. 어쨌든, 고맙습니다 @ 렉스. –

+0

그래, 포기 ... 나는 실제로 이러한 "NoClassDefFoundErrors"를 극복 할 수 있었지만 이제는 "java.lang.RuntimeException : Stub!" 마치 Robolectric이 android.jar 앞에 classpath에 추가 된 것처럼. 어쨌든 android-test-plugin의 마지막 버전을 빌드하는 것은 이전의 문제를 해결 한 것으로 보이므로, 나는 당신의 대답을 받아 들일 것입니다. 감사. –

+0

어, 나도 한 가지 문제를두고 싸우고있다. 사실 지금은 필기 시험을 포기했다. 스타일 문제로 인해 robolectric의 스냅 샷 버전을 사용해야했고이 버전은 리소스 파일을 찾지 못했습니다 ... – alex