我已经分配了值时,如何解决空指针异常

时间:2019-04-02 05:04:09

标签: java android unit-testing robolectric

我正在使用roboelectric编写函数的单元测试,并且遇到空指针异常,但是我已经分配了变量。 我对此很陌生,所以如果有任何错误,请原谅我。

@Before
public void setup() {

    intent = new Intent(context, Xyz.class);
    intent.putExtra("abc", "abc");

    xyz = Robolectric.buildActivity(Xyz.class, intent)
            .create().start().get();
}

@Test
public void onConfigurationChanged() {
    int currentOrientation = xyz.getRequestedOrientation();
    RelativeLayouot gifframe = xyz.findViewById(R.id.gif_frame);
    assertNotNull(gifframe);
    assertEquals(gifframe.getVisibility(), VISIBLE);
    }
}

我希望gifframe能够获得可见性,但是gifframe返回空值。我搜索此方法的任何地方都是在调用它之前分配值。我已经在上一行中指定了值。

2 个答案:

答案 0 :(得分:0)

好像findViewById返回null。对于给定的view,基本上没有Id可用。那是调试的正确位置。

我建议您附加一个调试器,看看正在加载的view是什么,并检查它是否具有所需的视图。

希望这会有所帮助。

答案 1 :(得分:0)

这样做的时候

 RelativeLayouot gifframe = xyz.findViewById(R.id.gif_frame);

确保您已完成setContentView(R.layout.thefilewhichhas_gif_frame)

意思是确保它知道需要去哪里寻找gif_frame