摘要中的模拟时钟 class 抛出 NullPointerException
Mocking Clock in abstract class throws NullPointerException
我有一个像这样的摘要class
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() returns 一个 'Instant' class 对象。
你使用合适的转轮吗,即。 MockitoJUnitRunner?
但是我相信 clockMock
仅在创建对象后才被初始化,即。您的 myObject
将收到 null
作为参数。
尝试仅在 @Before
部分初始化 myObject
。
我有一个像这样的摘要class
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() returns 一个 'Instant' class 对象。
你使用合适的转轮吗,即。 MockitoJUnitRunner?
但是我相信 clockMock
仅在创建对象后才被初始化,即。您的 myObject
将收到 null
作为参数。
尝试仅在 @Before
部分初始化 myObject
。