这个问题与图书馆的泄漏库特别相关。
运行androidTest时出现以下错误
Started running tests
Test running failed: Instrumentation run failed due to 'java.lang.NoSuchMethodError'
Empty test suite.
仅当我尝试将LeakUploadService添加到bugsnag时,问题才会出现
private void installLeakCanary() {
sRefWatcher = LeakCanary.refWatcher(this)
.listenerServiceClass(LeakUploadService.class)
.watchDelay(DELAY, TimeUnit.SECONDS) // delay sending the bug report to avoid blocking the UI thread
.buildAndInstall();
}
但是,如果我使用以下行而不是上面的函数
LeakCanary.install(this);
我所有的测试运行正常,没有问题。
我正在从MultiDexApplication扩展的主应用程序类onCreate中调用以下代码
if (LeakCanary.isInAnalyzerProcess(this)) { // Do this before normal normal app init code
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
installLeakCanary();
Bugsnag.init(this);
我也正在为测试禁用leakcanary
configurations.all { config ->
if (config.name.contains('UnitTest') || config.name.contains('AndroidTest')) {
config.resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.squareup.leakcanary' && details.requested.name == 'leakcanary-android') {
details.useTarget(group: details.requested.group, name: 'leakcanary-android-no-op', version: details.requested.version)
}
}
}
}
在我的AndroidManifest.xml中添加
<service android:name="com.atheer.argon.LeakUploadService"/>
<meta-data
android:name="com.bugsnag.android.API_KEY"
android:value="xxxxxxxxxxxxxxxxxxxxxxx"/>
所以我的问题是为什么添加LeakUploadService类以将内存泄漏报告给bugsnag我的测试不再运行?我想念什么?