首先,我想宣布我对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>
有解决方法/解决方案吗? 任何帮助将不胜感激。
答案 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