Может быть, как правило, труднее найти информацию об интеграционном тестировании, поскольку она гораздо более специфична для реального приложения и его бизнес-использования. Тем не менее, вот мой взгляд на это.
То, что относится к юнит-тестам, относится и к интеграционным тестам: у модулей должен быть простой способ имитировать свои внешние входы (файлы, БД, время ...), чтобы их можно было тестировать вместе с другими юнит-тестами .
Но то, что я нашел чрезвычайно полезным, по крайней мере для приложений, ориентированных на данные, - это возможность создавать «консольную» версию приложения, которая принимает входные файлы, которые полностью определяют его состояние (без зависимостей от баз данных, сети ресурсы ...) и выводит результат в виде другого файла. Затем можно поддерживать пары файлов входных данных / ожидаемых результатов и, например, проверять регрессии в рамках ночных сборок. Наличие этой консольной версии упрощает создание сценариев и невероятно упрощает отладку, поскольку можно полагаться на очень стабильную среду, в которой легко воспроизводить ошибки и запускать отладчик.