【发布时间】:2015-05-11 13:59:22
【问题描述】:
在我的应用程序中添加了 LeakCanary (1.3):
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
LeakCanary.install(this);
当我为我的应用程序运行 Robolectric 测试套件时,我在 LeakCanary 中收到 NullPointerException。
Caused by: java.lang.NullPointerException
at com.squareup.leakcanary.LeakCanary.isInServiceProcess(LeakCanary.java:165)
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.java:141)
at com.squareup.leakcanary.LeakCanary.install(LeakCanary.java:52)
at com.squareup.leakcanary.LeakCanary.install(LeakCanary.java:43)
at com.package.application.MyApplication.onCreate(MyApplication.java:50)
at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:131)
at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:431)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:224)
我补充说,我使用 Crashlytics 来指出它(以及其他方法)接收相同的应用程序但不抛出任何异常。
不确定这是否应该在此处或 LeakCanary 的 GitHub 问题上。还有其他人遇到这个问题吗?
【问题讨论】:
-
看一下 LeakCanary.java 的源码,执行测试时好像 HeapAnalyzerService 没有运行。
-
在测试中覆盖您的应用程序并抑制 Crashlitics 和 LeakCanary 初始化。更多信息在这里 (robolectric.org/custom-test-runner)
-
谢谢!我选择了自定义应用程序类选项。