[英]Mocking Clock in abstract class throws NullPointerException
I have an abstract class like this 我有一个像这样的抽象类
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;
}
}
Now I'm writing tests like this: 现在,我正在编写这样的测试:
class MyClassExtender extends MyClass {
Myclass(Clock clock) {
super(clock);
}
}
In the same file 在同一文件中
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();
}
}
This throws a NullPointerException at the line I've mentioned above. 这在我上面提到的行上引发了NullPointerException。 What am I doing wrong ?
我究竟做错了什么 ? FYI: The now() returns an 'Instant' class object.
仅供参考:now()返回一个“即时”类对象。
Do you use proper runner, ie. 您是否使用适当的流道,即 MockitoJUnitRunner?
MockitoJUnitRunner?
However I believe that clockMock
is initialized only after object creation, ie. 但是,我相信
clockMock
仅在对象创建后才初始化。 your myObject
will receive null
as parameter. 您的
myObject
将收到null
作为参数。
Try to initialize myObject
only in @Before
section. 尝试仅在
@Before
部分中初始化myObject
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.