Какой минимальный доступ к исходному коду необходим для написания тестового кода для файла Windows DLL? - PullRequest
0 голосов
/ 08 февраля 2012

Так что там, где я работаю, существует такое разделение между командой тестирования и командой разработчиков. Основная проблема заключается в том, что команда тестирования не имеет доступа к исходному коду приложения, поэтому все тестирование компонентов должно выполняться через пользовательский интерфейс либо вручную, либо с помощью программного обеспечения UI Automation, большинство из которых я пишу здесь. Причиной отсутствия доступа является стоимость лицензии Perforce, которая должна быть предоставлена ​​для предоставления доступа группе тестирования и проведения независимого тестирования, и я не собираюсь здесь приводить доводы.

Однако большая часть функциональности приложений разделена на файлы DLL, а не содержится в одном исполняемом файле. Я также случайно узнал, что всякий раз, когда выполняется сборка, сценарий, который выполняется для этого, также генерирует документы с Doxygen, которые включают подробную информацию обо всех интерфейсах классов.

Так что мне было интересно, учитывая доступ к этим DLL-файлам и документации Doxygen, будет ли этого достаточно для написания модульных тестов для внешних интерфейсов DLL или для этого потребуется доступ к их заголовочным файлам или, возможно, даже к дополнительным ресурсы требуются? И как поступить с минимальным подходом?

1 Ответ

1 голос
/ 08 февраля 2012

Компилятор должен иметь возможность связываться с внешними интерфейсами, поэтому, если они все не заполняют какую-либо форму специального интерфейса, точно такую ​​же для каждой DLL, вам как минимум понадобятся заголовки, которые определяют функции, которые будут использоватьсяиз каждого dll (любых пользовательских классов или структур) и файла lib, с которым компилятор может ссылаться.

это можно сделать без одного (просто используя документы), но работа становится экспоненциально большей,как и тогда, необходимо использовать LoadLibrary с кучами вызовов GetProcAddress, и вам нужно убедиться, что каждая функция / класс / интерфейс, который должен быть протестирован, экспортируется.

...