На работе мы пытаемся запустить два набора тестов.
Во-первых, мы статически связываемся для модульных тестов каждой функции, независимо от того, экспортирована она или нет. Это позволяет нам тестировать каждую функцию в более контролируемой среде, устраняя любые проблемы, которые мы находим в «внутреннем» коде.
Далее мы динамически связываемся для проверки экспортируемых функций. Это позволяет нам тестировать экспортируемые функции, зная, что все работает дальше вниз по стеку вызовов и в неэкспортированные функции в библиотеке.
Этот метод хорошо сработал для нас, так как мы обнаружили ошибки в статически связанных тестах, которые мы исправили до нахождения различных ошибок при запуске динамически связанных тестов. Если бы мы тестировали только с использованием динамического связывания, мы бы потратили больше времени на отладку / исправление составной проблемы, чем фактически потратили бы на решение двух отдельных, изолированных проблем.