Я уже несколько лет являюсь практиком разработки тестов, и в целом я доволен этим. Одна часть, которую я еще не понимаю, - это идея, что вы всегда должны быть модульным тестированием "наименьшей возможной единицы".
Часть идеи модульного тестирования, похоже, должна позволить вам реорганизовать с уверенностью, что вы ничего не сломаете. Тем не менее, я нахожу, что тесты, которые проверяют очень маленькие кусочки кода, почти никогда не выживут в этих рефакторингах, код всегда изменяется достаточно значительно, чтобы небольшие модульные тесты просто отбрасывались и записывались новые тесты. Именно тесты охватывают более крупные функциональные возможности, которые, как представляется, придают наибольшее значение здесь, поскольку интерфейсы более высокого уровня не изменяются так часто.
И для тривиальных рефакторингов, таких как перемещение методов, они выполняются только с помощью IDE, и поскольку я использую статически типизированный язык, я никогда не сталкивался с ситуацией, когда среда IDE не может выполнить рефакторинг отлично.
У кого-нибудь есть похожие или противоположные переживания?