Существует две основные возможности:
- Сложность тестирования показывает, что интерфейс, предоставленный модулем, неполон.
- Ваше модульное тестирование подсчитывает внутреннюю частьмодуль таким образом, что потребители никогда не должны будут делать.
Если проблема заключается в неполном интерфейсе, то вы можете добавить дополнительные интерфейсы, которые делают модуль более легко тестируемым и более удобным для использования.Например, если статические переменные являются какими-то счетчиками, вам может понадобиться добавить метод «сброса», чтобы обнулить счетчики, готовые к следующей части модульного тестирования, или (в более общем случае использования)чтобы обнулить статистику, чтобы вы могли накапливать статистику заново.
Если проблема заключается в модульном тестировании, которое требует более глубокого исследования, чем потребители, то я не вижу ничего плохого в тестекод с использованием #include "sourcecode.c"
.Содержит код модуля в чистоте для общего пользования;это позволяет модульному тесту исследовать более глубоко, чем это было бы иначе.Он преобразует тестовый код из тестирования «черного ящика» в форму тестирования «белого ящика» - тест может увидеть больше тестируемого кода, чем обычный тест черного ящика.Но это иногда полезно.Часто это промежуточная стадия развития.После того, как вы проведете все испытания «черного ящика», вам, возможно, не придется беспокоиться о том, чтобы исследовать внутренние органы таким же образом - пока вы не внесете изменения.