Java junit测试调用不同类的另一个方法的方法
我正在使用Java junit测试调用不同类的另一个方法的方法,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我正在使用Mockito为下面的代码编写Junit测试,但是我得到了一个空指针异常。我模拟它的方式有错误吗 public boolean isApplyChecked() { return _rranalysis.getApplytoAllState(); } 我的测试用例是 @Test public void testIsApplyChecked() { JCheckBox Rra_Apply_Field = Mockito.mock(JCheckBox.class);
Mockito
为下面的代码编写Junit
测试,但是我得到了一个空指针异常。我模拟它的方式有错误吗
public boolean isApplyChecked()
{
return _rranalysis.getApplytoAllState();
}
我的测试用例是
@Test
public void testIsApplyChecked() {
JCheckBox Rra_Apply_Field = Mockito.mock(JCheckBox.class);
Mockito.when(Rra_Apply_Field.isSelected()).thenReturn(true);
RepeatRejectAnalysis rs = Mockito.mock(RepeatRejectAnalysis.class);
Mockito.when(rs.getApplytoAllState()).thenReturn(true);
boolean val = repeatRejectAnalysis_Listener.isApplyChecked();
Assert.assertEquals(true, val);
}
您必须将
RepeatRejectAnalysis
类依赖项注入到RepeatRejectAnalysis\u侦听器中
。例如:
使用setter
RepeatRejectAnalysis rs =Mockito.mock(RepeatRejectAnalysis.class);
Mockito.when(rs.getApplytoAllState()).thenReturn(true);
repeatRejectAnalysis_Listener.setAnalysis(rs);
boolean val=repeatRejectAnalysis_Listener.isApplyChecked();
使用@InjectMocks
public class ListenerTest{
@InjectMocks
private Listener repeatRejectAnalysis_Listener = new Listener();
@Mock
private RepeatRejectAnalysis rs;
@Before
public void init(){
MockitoAnnotation.initMocks(this);
}
// reuse the exact same method as you have now.
@Test
public void testIsApplyChecked() {
JCheckBox Rra_Apply_Field=Mockito.mock(JCheckBox.class);
Mockito.when(Rra_Apply_Field.isSelected()).thenReturn(true);
RepeatRejectAnalysis rs =Mockito.mock(RepeatRejectAnalysis.class);
Mockito.when(rs.getApplytoAllState()).thenReturn(true);
boolean val=repeatRejectAnalysis_Listener.isApplyChecked();
Assert.assertEquals(true, val);
}
}
另一个答案是正确的,那就是你所需要的一点嘲弄。但是:似乎不需要对当前测试用例进行模拟 测试的思想是使用一个(最小!)设置,该设置正好包含启用测试所必须的步骤 嘲笑JCheckBox是没有意义的。。。当您打算测试的方法没有以任何方式使用该复选框时