Я пишу модульный тест, используя testng и mockito. Обычно я вызываю один метод несколько раз внутри одного и того же метода тестирования, используя разные значения / условия для проверки всех сценариев.
Пожалуйста, не думайте о логике и дизайне, которые я предоставил. это всего лишь образец для понимания того, что на самом деле я хочу сделать.
Просмотрите код ниже.
public class Human {
private String name;
private boolean parent;
private List<Human> childs = new ArrayList<>();
public String getName() {
return name;
}
public boolean isParent() {
return parent;
}
public void setParent(boolean parent) {
this.parent = parent;
}
public void addChild(List<Human> childs) {
this.childs = childs;
}
public List<Human> getChilds() {
return childs;
}
}
public class Validator {
public boolean isParent(Human human) {
if (null == human) {
return false;
}
if (human.isParent()) {
return true;
}
if (human.getChilds().size() > 0) {
return true;
}
return false;
}
}
Я пишу тестовый пример для метода Validator isParent с помощью mockito.
public class ValidatorTest {
public void testIsParent() throws Exception {
Validator validator = Mockito.spy(new Validator());
Human human = Mockito.mock(Human.class);
Mockito.when(human.isParent()).thenReturn(false);
boolean isParent = validator.isParent(human);
Mockito.verify(human).getChilds();
Mockito.when(human.isParent()).thenReturn(true);
isParent = validator.isParent(human);
Mockito.verify(human).getChilds();
}
Здесь я хочу убедиться, что getChilds () никогда не вызывает второй вызов метода для validator.isParent (human), потому что издеваемый человеческий набор возвращает true при вызове human.isParent ();
Я использовал Mockito.verifyZeroInteractions (), но он говорит об ошибке. Насколько я понимаю, проверка Mockito.verifyZeroInteractions () во всех тестах. не только для вызова конкретного метода.
Я хочу знать, есть ли способ проверить, что метод не вызывается для некоторых случаев, а метод не вызывается для тех же случаев в рамках одного и того же метода тестирования. Или мне следует потренироваться протестировать один сценарий одним методом.