【问题标题】:Robolectric: NullPointerException in setupActivity()Robolectric:setupActivity() 中的 NullPointerException
【发布时间】:2017-07-21 22:06:33
【问题描述】:

我正在尝试使用 Robolectric 测试我的活动,但在尝试使用 Robolectric 设置活动时,我总是得到 NPE。我已按照robolectric.org 网站上的指南进行操作。

这是我的代码:

@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。 我得到的例外:

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)

【问题讨论】:

  • 尝试用 Activity 扩展你的类
  • 能否请您发布您的 MainActivity 代码?
  • 具体是哪些部分?我不能发布完整的代码,因为它是一家公司的财产。
  • 您可以尝试从@Config 中删除清单规范吗?我想 Robolectric 无法正确找到清单文件
  • 其实我已经解决了这个问题。我有一个导致 NPE 的 @Ignore 注释。我认为它只是在运行整个套件时忽略了测试,并且什么都不做。

标签: android android-testing robolectric


【解决方案1】:

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

“AGP 3.0 包括为更好地支持单元测试所做的更改(通过将合并的资源、资产 + AndroidManifest.xml 作为一等公民与 Java 代码一起包括在内)。

这可以通过将以下配置添加到您的 build.gradle 文件来启用

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

"

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 2014-01-02
    • 2021-08-05
    • 2017-02-01
    • 2014-04-29
    • 2012-05-21
    • 2013-09-21
    • 2012-04-29
    • 2017-06-16
    相关资源
    最近更新 更多