gpt4 book ai didi

java - 抽象类中的模拟时钟抛出 NullPointerException

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:49 25 4
gpt4 key购买 nike

我有一个像这样的抽象类

public abstract class MyClass {
final Clock clock;

Myclass(Clock clock) {
this.clock = clock;
}

public void myMethod() {
Long time = clock.now().getMillis(); // I get exception here.
return true;
}

}

现在我正在编写这样的测试:

class MyClassExtender extends MyClass {
Myclass(Clock clock) {
super(clock);
}
}

在同一个文件中

public class MyClassTest {

private static final Long NOW = "283748L";

@Rule
public final Mocks mocks = new Mocks(this);

@Mock
private Clock clockMock;

private myObject = new MyClassExtender(clockMock);

@Before
@SuppressWarnings("unchecked")
public void setup() throws Exception {
myClassSpy = Mockito.spy(myObject);
}

public void testMethod() {
Mockito.when(clockMock.now().getMillis()).thenReturn(NOW);
assertThat(myClassSpy.myMethod()).isTrue();
}
}

这会在我上面提到的行处引发 NullPointerException。我究竟做错了什么 ?仅供引用:now() 返回一个“即时”类对象。

最佳答案

您是否使用正确的运行者,即。 MockitoJUnitRunner?

但是我相信 clockMock 仅在对象创建后才初始化,即。您的 myObject 将接收 null 作为参数。

尝试仅在 @Before 部分初始化 myObject

关于java - 抽象类中的模拟时钟抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28499058/

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