Можно ли перенаправить тесты MS Unit из EXE в DLL?

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

По некоторым данным, этому коду более 20 лет, он написан на родном C++. Я не могу выполнять тесты в DLL напрямую, так как фреймворк не настроен, поэтому любые вызовы, выполняемые внутри DLL, не будут выполняться правильно. Я уже безуспешно пытался это сделать, но, возможно, для этого мне нужно более глубокое понимание структуры MFC.

Коллега предположил, что возможно можно было бы vstest.console каким-то образом запустить тесты через EXE, где можно поднять фреймворк, запустить тесты через EXE, которые затем перенаправляются в DLL, а затем вернуть результаты теста обратно через EXE в vstest.console, что фактически делает EXE своего рода прокси.

Я думаю, что это может быть далеко, но я не понимаю, как правильно запускать тесты в DLL. Можно ли это сделать? Есть ли способ лучше?


person Adrian    schedule 24.11.2015    source источник


Ответы (1)


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

Подробнее об универсальном тесте

Используйте общий тест, чтобы обернуть консольное приложение или тестовую консоль, которая

• Запускается из командной строки

• Возвращает код ошибки: 0 ‹- Пройдено; Ненулевой ‹- Ошибка

• Положительные тесты только для консольного приложения; Тестовый жгут может включать в себя отрицательные тесты.

Visual Studio обрабатывает общий тест так же, как и другие тесты, но

• Добавление общих тестов в тип проекта модульного тестирования.

• Командная строка должна запускать файл .GenericTest вместо UnitTest1.dll.

• vstest.console GenericTest1.GenericTest

ПРИМЕЧАНИЕ. Установите «длительность выполнения» достаточно долго для вашего EXE-файла.

person Garland    schedule 24.11.2015
comment
Прохладный. Я должен буду изучить это дальше. В нем будет указано, какие тесты в DLL прошли успешно или не удалось? Не уверен, что вы имеете в виду под «Тестовый жгут может включать в себя отрицательные тесты». - person Adrian; 25.11.2015
comment
Хммм, нет, это не сработает. Приложение не является консольным, поэтому часть запускаемой платформы основана на графическом интерфейсе. Не думаю, что из-за этого Generic Test сработает. Что касается Coded UI Test, для этого требуется Visual Studio Ultimate или Visual Studio Premium, к которым у меня нет доступа. - person Adrian; 25.11.2015