Visual Studio — dll тестовый модуль MSTest C ++ не работает

Модульный тест C # — работает нормально

Я прочитал документацию по модульному тесту MSTest (совершенно бесполезную) на веб-сайте Microsoft: совершенно бесполезный-мс-док-ссылка. Затем я прочитал целый ряд других полезных ссылок (например, на SO) и, наконец, я могу запустить C # модульные тесты без проблем, вот так:

mstest /testcontainer:UnitTest.dll /detail:errormessage

Модульный тест C ++ — Сбой

Насколько я могу судить, это должно быть то же самое для модульных тестов C ++, поэтому я выполнил аналогичную команду (подробные сведения о команде в конце) для C ++, но затем я получил ошибку:

UnitTest_TrackManager.dll Невозможно загрузить тестовый контейнер
‘UnitTest_TrackManager.dll’ или одна из его зависимостей. Если вы строите
Сборка вашего тестового проекта как 64-битная сборка не может быть загружена.
При сборке тестового проекта выберите «Любой ЦП» для
Платформа. Чтобы запустить ваши тесты в 64-битном режиме на 64-битном процессоре, вам нужно
необходимо изменить настройки теста на вкладке «Хосты», чтобы запустить тесты в
32-битный процесс. Сведения об ошибке: не удалось загрузить файл или сборку
‘Файл: /// D: \ MiddlewareTest01 \ x64 \ Debug \ UnitTest_TrackManager.dll’
или одна из его зависимостей. Модуль должен был содержать
сборочный манифест.

32-битная или 64-битная DLL?

Итак, честно говоря, я создал код для 64-разрядных, а MStest только 32-разрядный. я использовал dumpbin /HEADERS fname.dll чтобы проверить, что это 64-битный файл и он:

File Type: DLL

FILE HEADER VALUES
8664 machine (x64)
D number of sections
5829E628 time date stamp Mon Nov 14 16:28:24 2016
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
Executable
Application can handle large (>2GB) addresses
DLL

Итак, я перекомпилирую для 32-битной и снова запустить тест, но я получаю ту же ошибку. Поэтому я проверяю, что выходной файл (DLL) является 32-разрядным, и он выглядит так, вот для этого есть свалка:

File Type: DLL

FILE HEADER VALUES
14C machine (x86)
C number of sections
5829E792 time date stamp Mon Nov 14 16:34:26 2016
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
2102 characteristics
Executable
32 bit word machine
DLL

Модульный тест C ++ работает в IDE

Используя MSVS2015 IDE, я могу скомпилировать и запустить мой код / ​​модульные тесты, и все они работают (когда я использую сборку x86) — и все они проходят. Если я выбираю x64 build, то он жалуется.

Конкретная команда, которая терпит неудачу

Вот точная командная строка, которую я использую:

mstest /testcontainer:UnitTest_TrackManager.dll /detail:errormessage

Он запускается из того же места, где живет DLL, который находится здесь:

D:\<somepath>\MiddlewareTest01\Debug\UnitTest_TrackManager.dll

куда <somepath> просто чтобы скрыть информацию о моем ПК / пользователе и MiddlewareTest01 это папка решения.

Как я уже сказал, я могу заставить это работать для проектов C #, но для C ++ это, кажется, не работает таким же образом.

Обновить

Используя зависимость, он говорит мне:

MICROSOFT.VISUALSTUDIO.TESTTOOLS.CPPUNITTESTFRAMEWORK.DLL не был найден. Может ли это быть проблемой?

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы [email protected]