Ложный метод обращается к интерфейсу для поиска нуля - PullRequest
0 голосов
/ 22 октября 2018

У меня есть метод, который я должен нарисовать для интерфейса и написать тест для поиска nullPointerExc.Вот метод:

boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) { 
    return !currentGroupAdm.getDocs().equals(groupAdm.getDocs()); 
}

Где-то в методе getDocs есть ноль.

Я создал интерфейс Changer с методом:

boolean hasDocsChangedRequired();

И я реализую это в классес тем же методом тела, что и ранее с правилами SOLID

У меня есть вопрос, как правильно написать тест, используя mockito для полного покрытия этой булевой функции?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

@ pawel, вы можете написать тест для проверки вашей функции следующим образом, я предполагаю, что функция не является статической.Если вы хотите сделать это статическим, то вам просто нужно удалить эти 2 строки

@InjectMocks
ChangerImpl changer;

И вместо «чейнджера» вы вызываете соответствующий реализованный класс.Надеюсь, это поможет.

@RunWith(MockitoJUnitRunner.class)
public class TestSampleTest {

  @InjectMocks
  ChangerImpl changer;

  @Test(expected = NullPointerException.class)
  public void test1(){

    GroupProvider currentGroupAdm = mock(GroupProvider.class);
    doReturn(null).when(currentGroupAdm).getDocs();

    GroupProvider groupAdm = mock(GroupProvider.class);
    oReturn("sample2").when(groupAdm).getDocs();

    changer.hasDocsChangedRequired(currentGroupAdm, groupAdm);
  }

  @Test
  public void test2(){

    GroupProvider currentGroupAdm = mock(GroupProvider.class);
    doReturn("sample1").when(currentGroupAdm).getDocs();

    GroupProvider groupAdm = mock(GroupProvider.class);
    doReturn("sample2").when(groupAdm).getDocs();

    Assert.assertThat(changer.hasDocsChangedRequired(currentGroupAdm, groupAdm), is(true));
  }

  @Test
  public void test3(){

    GroupProvider currentGroupAdm = mock(GroupProvider.class);
    doReturn("sample1").when(currentGroupAdm).getDocs();

    GroupProvider groupAdm = mock(GroupProvider.class);
    doReturn("sample1").when(groupAdm).getDocs();

    Assert.assertThat(changer.hasDocsChangedRequired(currentGroupAdm, groupAdm), is(false));
  }

}
0 голосов
/ 22 октября 2018

Вывод вашего метода

boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) { 
    return !currentGroupAdm.getDocs().equals(groupAdm.getDocs()); 
}

зависит исключительно от ваших двух входных объектов.

Другими словами: вы только должны предоставить входные объекты, которые дают то, что вы хотите дать для конкретного теста.Значение: вы, вероятно, хотите написать тест, в котором currentGroupAdm.getDocs() дает что-то, равное groupAdm.getDocs(), и тот, в котором два вызова дают неравный результат.

В идеале вам не нужновысмеивать что-нибудь здесь.

...