Вы правы в своих ожиданиях модульного тестирования;это очень много о проверке и проверке ожидаемого поведения.
Одно значение, которое, я думаю, многие упускают из виду при модульном тестировании, это то, что его значение увеличивается со временем.Когда я пишу кусок кода и пишу модульный тест, я в основном только что проверил, что код делает то, что, как я думаю, должен, что он не дает ошибок в любых способах, которые я выбрал для проверки, и т. Д. Это хорошовещи, но они имеют ограниченную ценность, потому что они выражают знание, которое вы имеете о системе в то время;они не могут помочь вам с вещами, о которых вы не знаете (есть ли в моем алгоритме хитрая ошибка, о которой я не знаю и не собирался проверять?).
Реальная ценностьмодульных тестов, на мой взгляд, это ценность, которую они получают с течением времени.Это значение принимает две формы;значение документации и значение проверки.
Значение документации - это значение модульного теста, говорящего «это то, что автор кода ожидал, что этот бит кода будет делать».Трудно переоценить ценность такого рода вещей;когда вы работали над проектом, в котором имеется большой кусок недокументированного унаследованного кода, позвольте мне сказать вам, что такого рода ценность документации похожа на чудо.
Другое значение - это проверка;поскольку код живет в проектах, все подвергается рефакторингу, изменению и изменению.Модульные тесты обеспечивают проверку того, что компонент, который, по вашему мнению, работал одним способом, продолжает работать таким же образом.Это может иметь неоценимое значение, помогая находить ошибки, которые проникают в проекты.Например, изменение решения для базы данных иногда может быть прозрачным, но иногда эти изменения могут вызвать неожиданные изменения в работе некоторых вещей;модульное тестирование компонентов, которые зависят от вашего ORM, может выявить критические тонкие изменения в базовом поведении.Это действительно полезно, когда у вас есть кусок кода, который отлично работал в течение многих лет, и никто не думает рассматривать его потенциальную роль в сбое;Эти типы ошибок могут найти ОЧЕНЬ много времени, потому что последнее место, которое вы будете искать, находится в компоненте, который был надежным в течение очень долгого времени.Модульное тестирование обеспечивает проверку этой «твердости породы».