当我使用Leakcanary的LeakUploadService

时间:2018-10-16 05:18:20

标签: android android-testing leakcanary

这个问题与图书馆的泄漏库特别相关。

运行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我的测试不再运行?我想念什么?

0 个答案:

没有答案