【发布时间】:2022-01-30 17:17:47
【问题描述】:
我有以下 Java 代码:
文件名:MyClass.java
import javax.inject.Inject;
...
public class MyClass {
@inject
private MyDatabaseDao myDatabaseDao;
public MyResponse process() {
...
String value = myPrivateMethod(x, y, z);
...
}
private String myPrivateMethod(String x, String y, String z) {
value = myDatabaseDao.operation(x, y, x); // Line Number 86
...
}
}
文件名:MyClassTest.java
@ExtendWith(MockitoExtension.class)
public class MyClassTest {
@InjectMocks
MyClass myClass;
@Mock
MyDatabaseDao myDatabaseDao;
@Test
void testProcess() {
...
Mockito.when(myDatabaseDao.operation(any(), any(), any()))
.thenReturn(someValue);
...
assertEquals(testResponse, myClass.process());
}
}
我在MyClass.java 的第 86 行得到一个nullPointerException,即该行中的myDatabaseDao 对象为空。如何正确模拟和传递该对象?
我正在使用 JUnit 5 和 Mockito v4.2.0
【问题讨论】:
-
上面的代码可以正常工作。在我的情况下它不起作用,因为我有一些剩余的代码正在创建一个新的
MyClass对象(我忽略了这一点在清理代码时)。