Должен ли я написать свой код C++ как статическую или динамическую библиотеку, если я хочу проверить это?

Я работаю над проектом C++ в Visual Studio и хотел проверить его с помощью Google Test.

Для этого я создал решение, которое включает три проекта:

  1. Код проекта в виде консольного приложения.
  2. Google Test как статическая библиотека.
  3. Тестирует проект как консольное приложение.

Я написал код в проекте кода и тест в проекте теста.

Когда я попытался построить решение, я получил ошибку lnk2019, которая перестала происходить, когда я переместил классы в проект тестов (но я не хочу, чтобы они были).

Я прочитал, что лучший способ сделать это - написать классы в виде библиотеки, чтобы я мог использовать их в обоих проектах (код и тесты).

Должен ли я сделать это как статическую библиотеку или как DLL (и почему)?

Другие решения также приветствуются.

1 ответ

Решение

Главное здесь понять: вы получаете вещи задом наперед.

Вы не принимаете это решение для того, чтобы перейти к "более легкому" тестированию. Прежде всего, вы должны понимать "производственные требования" к вашей доставке. Вы создаете статическую библиотеку, если это лучше всего подходит для доставки вашего продукта. Если нет, вы создаете динамическую библиотеку.

Для тестирования вы имеете дело с выбранным "форматом доставки"; или вы думаете о простом способе, который позволит вам создать другую вещь для тестирования (хотя это не рекомендуется, так как вы хотите протестировать свой продукт, больше ничего).

Не поймите меня неправильно: важно спроектировать для тестирования; но решение, которое вы запрашиваете, должно зависеть от ваших производственных требований!

Другими словами: "форм-фактор" вашего продукта должен зависеть от требований продукта, он не должен определяться настройкой вашего теста.

Другие вопросы по тегам