В моем понимании, тестирование кода заключается в проверке правильности результатов, например, в калькуляторе. Мне нужно написать контрольный пример, чтобы проверить, равен ли результат 1 + 1 2.
Но я прочитал много тестов о том, сколько раз вызывается метод. Я очень смущен этим. Лучший пример - это то, что я только что видел в Spring in Action :
public class BraveKnight implements Knight {
private Quest quest;
public BraveKnight(Quest quest) {
this.quest = quest;
}
public void embarkOnQuest() {
quest.embark();
}
}
public class BraveKnightTest {
@Test
public void knightShouldEmbarkOnQuest() {
Quest mockQuest = mock(Quest.class);
BraveKnight knight = new BraveKnight(mockQuest);
knight.embarkOnQuest();
verify(mockQuest, times(1)).embark();
}
}
Я действительно понятия не имею, зачем им нужно проверять, что функция embark()
вызывается один раз. Не думаете ли вы, что embark()
обязательно будет вызван после вызова embarkOnQuest()
? Или произойдут некоторые ошибки, и в журналах появятся сообщения об ошибках, в которых указан номер строки ошибки, которые могут помочь мне быстро найти неправильный код.
Так какой смысл проверять как выше?