Ответ на заданный вопрос, на мой взгляд, «объектно-ориентированный, кажется, все, о чем думают TDD».
Почему? Я не знаю. Возможно, все они - программисты на Java, зараженные болезнью, когда все заставляют полагаться на шесть уровней косвенности, внедрение зависимостей и интерфейсные адаптеры.
Java-программисты, кажется, любят все усложнять, чтобы "сэкономить время позже".
Я советую применять некоторые гибкие принципы к вашему TDD: если это не вызывает проблемы, не решайте ее. Не переусердствуйте.
На практике я обнаружил, что если статические методы сначала хорошо проверены, то они не станут причиной ошибок в вызывающих.
Если статические методы выполняются быстро, имитация не требуется.
Если статические методы работают с вещами извне программы, то вам может понадобиться фиктивный метод. В этом случае вам нужно будет смоделировать много разных видов поведения функций.
Если вам нужно макетировать статический метод, помните, что есть способы сделать это вне OO-программирования.
Например, вы можете написать сценарии для обработки вашего исходного кода в тестовой форме, которая вызывает вашу фиктивную функцию. Вы можете связать разные объектные файлы с разными версиями функции в тестовых программах. Вы можете использовать приемы компоновщика, чтобы переопределить определение функции (если оно не было встроено). Я уверен, что есть еще несколько уловок, которые я не перечислил здесь.