Robolectric:setupActivity()中的NullPointerException [英] Robolectric: NullPointerException in setupActivity()

查看:247
本文介绍了Robolectric:setupActivity()中的NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Robolectric测试我的活动,但是当尝试使用Robolectric设置活动"时,我总是得到NPE.我遵循了 robolectric.org 网站上的指南.

I'm trying to use Robolectric for testing my activities, but I'm always getting a NPE, when trying to setup the Activity with Robolectric. I have followed the guide from the robolectric.org website.

这是我的代码:

@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP, manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
@Ignore
public class MainActivityUnitTest {

    private MainActivity activity;

    @Before
    public void setup() {
        activity = Robolectric.setupActivity(MainActivity.class);
    }

    @Test
    public void dummyTest() {
        assertTrue(true);
    }
} 

其他一些信息:我在项目中将Dagger2用于DI. 我得到的例外情况:

Some other information: I'm using Dagger2 for DI in the project. The exception I'm getting:

java.lang.NullPointerException
    at org.robolectric.internal.ShadowExtractor.extract(ShadowExtractor.java:5)
    at org.robolectric.Shadows.shadowOf(Shadows.java:1165)
    at org.robolectric.shadows.CoreShadowsAdapter.getMainLooper(CoreShadowsAdapter.java:42)
    at org.robolectric.util.ComponentController.<init>(ComponentController.java:31)
    at org.robolectric.util.ActivityController.<init>(ActivityController.java:35)
    at org.robolectric.util.ActivityController.of(ActivityController.java:27)
    at org.robolectric.Robolectric.setupActivity(Robolectric.java:46)
    at com.me.myapplication.MainActivityUnitTest.setup(MainActivityUnitTest.java:32)

推荐答案

尝试: https://github.com/robolectric/robolectric/issues/3169

"AGP 3.0进行了一些更改,以更好地支持单元测试(通过将合并的资源,资产+ AndroidManifest.xml作为第一等公民包括Java代码).

"AGP 3.0 includes changes made to better support unit tests (by including merged resources, assets + AndroidManifest.xml as first class citizens along with the Java code).

可以通过将以下配置添加到build.gradle文件中来启用此功能

This can be enabled by adding the following configuration to your build.gradle files

android {
...
testOptions {
unitTests {
includeAndroidResources = true
}
}

"

这篇关于Robolectric:setupActivity()中的NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆