2017-02-13 3 views
3

Я пишу 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);  
} 

ответ

1

Вы должны вводить зависимость 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); 
    } 

} 
0

Другой ответ является правильным о том, что один отсутствующих куске насмехаясь, что вам нужно. Но тогда: нет издевательств, которые у вас есть в вашем текущем тестовом примере, как представляется, требуется.

Идея испытаний заключается в использовании (минимальной!) Установки, содержащей именно те этапы, которые действительно обязательны для . Включите тест.

Нет смысла насмехаться над JCheckBox ... когда метод, который вы собираетесь тестировать, не использует этот флажок!

Смежные вопросы