我有一个超级班:
public class B extends A{
public B(Context context){
super(context);
}
}
和B级继承它:
B b = new B(context)
在我使用Robolectric和Mockito的测试类中,当我像这样实例化B类时:@Mock Context context;
@Before
public void setup() {
initMocks(this);
B b = new B(context);
}
我在A类的构造函数的超级方法中得到了nullpointerexception。我做错了吗?
这是测试代码:
"dependsOn": [
"[resourceId('Microsoft.HDInsight/clusters/applications', parameters('clusterName'), parameters('TestEdgenodeName1'))]"
],
答案 0 :(得分:2)
简单回答:这并不容易。
您向我们隐藏的异常堆栈跟踪会告诉您/我们这些NPE发生在某些 base Android代码中。事情是:您正在将 context 对象传递给Fragment构造函数。
猜猜:片段代码然后启动使用该上下文对象。它对该对象进行了一系列调用,以便检索其他对象,然后然后对这些对象进行调用。
现在,您只模拟了一个Context对象。默认情况下,任何应该返回值的调用都将返回 null 。 Mockito对你所嘲笑的课程一无所知。因此,当您希望某个调用返回的值不是null时,您必须指定该行为。
所以,“简短”的答案是:你必须准备那个模拟对象才能像这样使用。答案很长......已经给出了;你需要深入研究它的details!
除此之外;你可以看看另一个question处理完全相同的问题。