Должен ли я написать свой код C++ как статическую или динамическую библиотеку, если я хочу проверить это?
Я работаю над проектом C++ в Visual Studio и хотел проверить его с помощью Google Test.
Для этого я создал решение, которое включает три проекта:
- Код проекта в виде консольного приложения.
- Google Test как статическая библиотека.
- Тестирует проект как консольное приложение.
Я написал код в проекте кода и тест в проекте теста.
Когда я попытался построить решение, я получил ошибку lnk2019, которая перестала происходить, когда я переместил классы в проект тестов (но я не хочу, чтобы они были).
Я прочитал, что лучший способ сделать это - написать классы в виде библиотеки, чтобы я мог использовать их в обоих проектах (код и тесты).
Должен ли я сделать это как статическую библиотеку или как DLL (и почему)?
Другие решения также приветствуются.
1 ответ
Главное здесь понять: вы получаете вещи задом наперед.
Вы не принимаете это решение для того, чтобы перейти к "более легкому" тестированию. Прежде всего, вы должны понимать "производственные требования" к вашей доставке. Вы создаете статическую библиотеку, если это лучше всего подходит для доставки вашего продукта. Если нет, вы создаете динамическую библиотеку.
Для тестирования вы имеете дело с выбранным "форматом доставки"; или вы думаете о простом способе, который позволит вам создать другую вещь для тестирования (хотя это не рекомендуется, так как вы хотите протестировать свой продукт, больше ничего).
Не поймите меня неправильно: важно спроектировать для тестирования; но решение, которое вы запрашиваете, должно зависеть от ваших производственных требований!
Другими словами: "форм-фактор" вашего продукта должен зависеть от требований продукта, он не должен определяться настройкой вашего теста.