У интеграционных тестов есть неприятные особенности: хрупкость и низкая скорость. Они работают на том уровне, когда без таймаутов нельзя, а каждый таймаут - потенциальное мигание.
Если можно вмержить в мастер с красными тестами - у тебя нет тестов.
Если они мигают, это бесит и сбивает всех с толку.
Если получается выделить какие-то куски кода в изолированные шмотки с четким маленьким апи - это большая радость: такое можно закрыть внутренними тестами и радоваться этому.
Всегда надо стараться писать логическое дерево, каждая ветка изолирована от других. имеет вход и он же выход, тогда и теститься все и непересекается. Если что то надо реюзнуть лучше скопипастить, если копипаста частая, оформлять либу. И получаем весь проект из изолированых шмотков + либы