3

首先,我想声明我对 Android 缺乏适当的测试基础设施感到沮丧......或者我可能是智障,我不知道......
我最终设法设置了android-test-plugin并且我写了一个对包含在其布局中的活动的几个测试 aCustomMapFragment这是我编写的扩展类SupportMapFragment
我所有尝试使用以下方法获取此活动实例的测试:

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

失败:

java.lang.NoClassDefFoundError: com/google/android/gms/maps/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>

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

4

1 回答 1

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

于 2013-08-27T14:10:02.377 回答