如何使用CMake定义C#单元测试项目?

时间:2019-01-16 08:13:51

标签: c# cmake csproj vs-unit-testing-framework

我正在转换一些现有的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(但我怀疑该问题并非特定于我的特定版本组合)。

2 个答案:

答案 0 :(得分:0)

手动添加<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的文档为here。 我找到了有关Project Guid的文档:Visual Studio project type guids

答案 1 :(得分:0)

谢谢@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}")