使用Robolectric问题在Android Studio中进行Android测试

时间:2013-08-20 20:50:58

标签: gradle robolectric android-testing supportmapfragment

首先,我想宣布我对Android中缺乏适当的测试基础设施感到沮丧...或者我可能是迟钝的,我不知道...
我最终设法设置了android-test-plugin,我为一个活动写了几个测试,其中包括CustomMapFragment,这是我写的一个扩展SupportMapFragment的类。
所有我的测试试图使用以下方式获取此活动的实例:

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

失败了:

  

java.lang.NoClassDefFoundError:   COM /谷歌/机器人/克/地图/ GoogleMap的$ OnInfoWindowClickListener

活动的setContentView

活动的xml如下:

<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>

有解决方法/解决方案吗? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我有临时解决方案。问题似乎是android-test-plugin无法读取aar文件。我的解决方案是在jar文件中添加一个依赖项,而不仅仅是testCompile,就像这个

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

像这样我可以运行一个简单的测试,例如创建一个LatLng并检查它是否为空,没有错误。希望它有所帮助。

修改

感谢Github上的SuperJugy提供更好的解决方案是在此提交中应用修复https://github.com/SuperJugy/gradle-android-test-plugin/commit/d5b7836cf7278dc9d0fe765b635de60c33911d72