在具有单独模块的 Android 测试项目中找不到 MockContentResolver
MockContentResolver is not found in an Android Test project with separate module
我正在尝试设置一个测试项目,如 Android Testing Blueprint 中所述,但我收到以下 NoClassDefFoundError:
java.lang.NoClassDefFoundError: android.test.mock.MockContentResolver
Android Studio 正确解决了这个问题,但是当 运行 我收到这个错误。
值得注意的是,我在应用程序项目上没有 android 测试配置,相反,我只有一个单独的 tests
模块:
apply plugin: 'com.android.test'
我正在 运行 进行这样的测试:
./gradlew :tests:connectedAndroidTest
可在此处找到重现此问题的测试项目:
https://github.com/vexdev/android-testing-templates/tree/master/AndroidTestingBlueprint
编辑:也在 Android Development community
上询问
编辑:还创建了以下 android 问题:
https://code.google.com/p/android/issues/detail?id=200182&thanks=200182&ts=1454489567
MockContentProvider 不是框架的一部分,它仅包含在用于测试 apk 的 SDK 中。
In your Android Studio project, you must store the source files for local unit tests under a specific source directory (src/test/java
)
正如@rds所说,测试包不是设备框架的一部分,因此您需要包含该包。
似乎 com.android.test 插件没有添加那些 类,所以你可以通过添加
来修复它
compile 'com.google.android:android-test:4.1.1.4'
在您应用插件的模块的依赖项中。
一些 android 包不会自动链接,但您必须使用 <uses-library>
标记明确指定它们。 android.test
包就是这种情况(提到see uses-library docs), like @rds。
如果您有 minSdkVersion > =15
,添加编译依赖项将起作用,但会添加最后一次更新于 2012 年 8 月 24 日的遗留 Maven 工件。
恕我直言,将以下代码片段添加到测试模块的清单中可能是更好的解决方案:
<application>
<uses-library android:name="android.test.runner" />
</application>
这将告诉系统也包含 android.test
包,因此 class 加载程序将找到 MockContentResolver
。
希望对您有所帮助。
我正在尝试设置一个测试项目,如 Android Testing Blueprint 中所述,但我收到以下 NoClassDefFoundError:
java.lang.NoClassDefFoundError: android.test.mock.MockContentResolver
Android Studio 正确解决了这个问题,但是当 运行 我收到这个错误。
值得注意的是,我在应用程序项目上没有 android 测试配置,相反,我只有一个单独的 tests
模块:
apply plugin: 'com.android.test'
我正在 运行 进行这样的测试:
./gradlew :tests:connectedAndroidTest
可在此处找到重现此问题的测试项目: https://github.com/vexdev/android-testing-templates/tree/master/AndroidTestingBlueprint
编辑:也在 Android Development community
上询问编辑:还创建了以下 android 问题: https://code.google.com/p/android/issues/detail?id=200182&thanks=200182&ts=1454489567
MockContentProvider 不是框架的一部分,它仅包含在用于测试 apk 的 SDK 中。
In your Android Studio project, you must store the source files for local unit tests under a specific source directory (
src/test/java
)
正如@rds所说,测试包不是设备框架的一部分,因此您需要包含该包。
似乎 com.android.test 插件没有添加那些 类,所以你可以通过添加
来修复它compile 'com.google.android:android-test:4.1.1.4'
在您应用插件的模块的依赖项中。
一些 android 包不会自动链接,但您必须使用 <uses-library>
标记明确指定它们。 android.test
包就是这种情况(提到see uses-library docs), like @rds。
如果您有 minSdkVersion > =15
,添加编译依赖项将起作用,但会添加最后一次更新于 2012 年 8 月 24 日的遗留 Maven 工件。
恕我直言,将以下代码片段添加到测试模块的清单中可能是更好的解决方案:
<application>
<uses-library android:name="android.test.runner" />
</application>
这将告诉系统也包含 android.test
包,因此 class 加载程序将找到 MockContentResolver
。
希望对您有所帮助。