Java 字段的方法上的Mockito when()
我试图在简单的应用程序中使用Mockito这个交互器进行测试,它可以作为有限状态机工作Java 字段的方法上的Mockito when(),java,testing,mockito,mvp,Java,Testing,Mockito,Mvp,我试图在简单的应用程序中使用Mockito这个交互器进行测试,它可以作为有限状态机工作 public class Machine { private OnActionListener mListener; private ArrayList<State> mStates; private FSMJsonParser parser; private State mCurrentState; public Machine(String jsonConfig, OnActionLis
public class Machine {
private OnActionListener mListener;
private ArrayList<State> mStates;
private FSMJsonParser parser;
private State mCurrentState;
public Machine(String jsonConfig, OnActionListener listener, FSMJsonParser parser) throws IOException {
this.mListener = listener;
this.parser = parser;
initStates(jsonConfig);
mCurrentState = getStateByName("AlarmArmed_AllLocked");
}
private void initStates(String jsonConfig) throws IOException{
mStates = parser.parseFSMFromJson(jsonConfig);
}
我使用方法parseFSMFromJson(readConfig())提供了一个parse JSON(带有状态描述,存储在资产中)。当以调试模式运行测试时,JSON被正确解析。但机器模拟对象的字段未初始化,为null,所有测试均失败。我需要初始化ArrayList mStates,以便机器类正常工作。如何正确测试该类???您需要在@Before方法中使用MockitoAnnotations.initmock(this),因为您没有使用MockitoJUnitRunner运行测试用例(请参阅) 像这样:
@Before
public void setUp() throws IOException {
MockitoAnnotations.initMocks(this);
when(parser.parseFSMFromJson(anyString())).thenReturn(parseFSMFromJson(readConfig()));
}
我宁愿这样做而不是模仿
private Machine machine;
@Before
public void setUp() throws IOException {
MockitoAnnotations.initMocks(this);
machine = new Machine(jsConfig, ...., parser);//Since you already have a constructor
when(parser.parseFSMFromJson(anyString())).thenReturn(parseFSMFromJson(readConfig()));
}
private Machine machine;
@Before
public void setUp() throws IOException {
MockitoAnnotations.initMocks(this);
machine = new Machine(jsConfig, ...., parser);//Since you already have a constructor
when(parser.parseFSMFromJson(anyString())).thenReturn(parseFSMFromJson(readConfig()));
}