Как определить проект модульного тестирования С# с помощью CMake?

Я преобразовываю некоторые существующие проекты C# для определения в CMake — переходя от предыдущей директивы include_external_msproject() к более новой полной поддержке C#.

Но я не вижу, как конвертировать проекты типа Visual C# Unit Test Project. Я могу собрать их как библиотеки и успешно скомпилировать, но Visual Studio не показывает их как проекты модульных тестов, как обычные библиотеки. Что наиболее важно, тесты не видны обозревателю тестов.


Вещи, которые я уже пробовал, включают:

  • Добавление TestProjectType=UnitTest в качестве целевого свойства:
    <TestProjectType>UnitTest</TestProjectType>
  • Добавление ссылочного пути в качестве целевого свойства следующим образом:
    <ReferencePath>$(ProgramFiles)/Common Files/microsoft shared/VSTT/$(VisualStudioVersion)/UITestExtensionPackages</ReferencePath>
  • Добавление Microsoft.VisualStudio.QualityTools.UnitTestFramework в качестве ссылки на проект (с использованием свойства CMake VS_DOTNET_REFERENCES).

Я использую Microsoft Visual Studio Professional 2015, CMake 3.13.2, .NET Framework 4.5.2 (но я подозреваю, что проблема не связана с моей конкретной комбинацией версий).


person Ziv    schedule 16.01.2019    source источник


Ответы (2)


Вручную добавив <TestProjectType>UnitTest</TestProjectType>, мой модульный тестовый проект отображается как модульный тест. Попытка выяснить, как это сделать с помощью cmake.

Обновление: ниже показан проект как unittest

set_target_properties(${target_name}
PROPERTIES
VS_GLOBAL_PROJECT_TYPES "{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
)

Документация для VS_GLOBAL_PROJECT_TYPES находится здесь. Я нашел эту документацию для Project Guid: руководства по типам проектов Visual Studio

person bhardwajs    schedule 14.01.2020

Спасибо @bhardwajs, ваш ответ помог мне.
Вы также можете добавить TestProjectType в глобальные свойства:

set_target_properties(${target_name} PROPERTIES
VS_GLOBAL_TestProjectType "UnitTest"
VS_GLOBAL_PROJECT_TYPES "{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")
person Paweł Iwaneczko    schedule 19.05.2021