Написание лучших библиотек (.DLL) для кода, используемого в GUI-версии и консольной версии? - PullRequest
0 голосов
/ 22 мая 2019

Я кодирую функцию в C ++, и мне нужно проверить, успешно ли эта функция вычисляет определенные тестовые случаи.Этот тест можно выполнить с помощью консольной версии функции.Наконец, функция будет работать в GUI-версии в приложении GUI.Конечно, я не хочу иметь две области конструирования (консольная версия и GUI-версия).

Моя первая идея - создать библиотеку (.DLL) для функции.Это позволяет мне вызывать ту же библиотеку из консольного приложения для тестовых случаев и в GUI-версии для приложения GUI.

Это путь?Какова лучшая практика для моего случая?

1 Ответ

0 голосов
/ 22 мая 2019

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

Но вы задаете простой вопрос, поэтому вот простой ответ.ДА, вы должны смотреть на отделение пользовательского интерфейса приложения от бизнес-логики, для тестирования и многих других причин, и ДА, упаковка функциональности в библиотеку (DLL - это термин для Windows) - это основное средстводостижения этого.Разумеется, вопрос о том, используете ли вы динамическую или статическую библиотеку, представляет ли вас сторонний набор инструментов, помогающий вам в тестировании, - это совсем другое.

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

(Также не бойтесь напрямую тестировать приложение с графическим интерфейсом, используя тестированиебегун, который понимает, как взаимодействовать с графическим интерфейсом. В идеале вы хотите тестировать вещи как в отдельности, так и в соединении, и в чистых средах, а также в тех, которые отражают производство.)

...