junit测试方法调用不同类的另一种方法
问题描述:
我正在写Junit
测试下面的代码使用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_Listener
。例如:
使用二传手
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没有意义......当您打算测试的方法没有以任何方式使用该复选框时!