Запуск юнит-теста с CppUnit на dll

У меня есть проект Visual Studio, в котором есть тестовые наборы CppUnit для одного из наших модулей. Этот проект при сборке создает DLL (что-то вроде ModuleUnitTest.dll). Я не понимаю, как мне запустить эти тесты? Есть ли в CppUnit готовые заглушки, которые могут читать из этой библиотеки и запускать тесты? Или я должен написать свой? Поскольку эти модульные тесты были доступны в течение долгого времени и нет заглушки, я думаю, что мне не нужно писать ее. Может кто-нибудь сказать мне, как я могу выполнить тесты из DLL?

0

Решение

Где-то в вашем тестовом коде вам нужен тестовый бегун. Стандартный ответ — создать файл типа CppUnitTestMain.cpp и добавить код примерно так (прямо из документов cppunit):

#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>

int main( int argc, char **argv)
{
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest( registry.makeTest() );
bool wasSuccessful = runner.run( "", false );
return wasSuccessful;
}

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

Но ручная обработка тестового реестра — это дополнительная работа, которую макросы должны обрабатывать для вас легко. Это приводит к большему вопросу, который я хотел бы задать: почему ваши тесты в настоящее время размещены в проекте DLL? Что вы делаете с ними, если их не казнят? Существуют ли другие загружаемые и запускаемые исполняемые файлы, которые вы могли бы использовать?

Обычно мы используем ответ, чтобы сам тестовый проект был исполняемым, а не DLL, и содержал весь тестовый код. Он статически связывает бизнес-логику с помощью компоновщика Дополнительные параметры зависимостей: файлы $ (SolutionDir) businessProject \ debug \ obj * .OBJ, а в решение мы добавляем зависимость проекта от создаваемого основного кода businessProject.

0

Другие решения

Youse Тестовый проводник плавающая панель Visual Studio.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector