有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Mockito监视一个接口,模拟它的默认方法,获取NullPointerException

假设有如下三个接口

interface A {}

interface B {
  A getA();
}

interface C {

  B getB();

  default boolean foo(C c) {
    return c.getB().getA().equals(c.getB().getA());
  }

  default int bar(C c) {
    if (foo(c)) {
      return 1;
    } else {
      return 0;
    }
  }
}

我想用下面的测试来测试方法bar(C c)

@Test
void test() {
  C c = spy(C.class);
  C cc = mock(C.class);   
  when(c.foo(cc)).thenReturn(true);
  assertEquals(1, c.bar(cc));
}

但是在使用foo方法时得到一个NullPointerException。 错误消息如下

java.lang.NullPointerException
    at com.example.C.foo
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

我很困惑出了什么问题


共 (0) 个答案