gpt4 book ai didi

java - 使用mockito测试时父类(super class)方法的构造函数中出现NullPointerException

转载 作者:行者123 更新时间:2023-12-02 02:51:03 24 4
gpt4 key购买 nike

我有一个 super 类:

public class A extends Fragment{
public A(Context context){
super(context);
}
}

B 类继承它:

public class B extends A{
public B(Context context){
super(context);
}
}

在我使用 Robolectric 和 Mockito 的测试类中,当我像这样实例化 B 类时:B b = new B(context)

我在类 A 的构造函数的 super 方法中遇到空指针异常。我做错了什么吗?

测试代码如下:

@Mock Context context;
@Before
public void setup() {
initMocks(this);

B b = new B(context);
}

最佳答案

简单的答案:没那么容易。

您向我们隐藏的异常堆栈跟踪会告诉您/我们这些 NPE 发生在某些基本 Android 代码中。事情是:您正在将 context 对象传递给 Fragment 构造函数。

猜猜看:然后 fragment 代码开始使用该上下文对象。它对该对象进行一系列调用,以便检索其他对象,然后对这些对象进行调用。

现在,您只模拟了一个 Context 对象。默认情况下,任何应该返回值的调用都将返回 null。 Mockito 对您正在 mock 的类(class)一无所知。因此,当您希望某个调用返回 null 以外的内容时,您必须指定该行为。

因此,“简短”的答案是:您必须准备该模拟对象才能像这样使用。很长的答案……已经给出了;你需要研究它的 details深入!

除此之外;你可以看看另一个 question处理完全相同的问题。

关于java - 使用mockito测试时父类(super class)方法的构造函数中出现NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com