我正在使用带有C ++ / CLI桥接器的C#和C ++开发.NET 4.5.2中的项目。我们的一些程序集是本机C ++,有些是使用#pragma managed / unmanaged的混合C ++和C ++ / CLI。
使用OpenCppCoverage,我可以在运行集成测试套件时获取本机DLL的覆盖数据,但不能混合非托管/托管代码的DLL的覆盖范围(托管代码被其他工具覆盖,我只需要覆盖对于非托管部分)。在尝试覆盖这些混合模式DLL时,我得到:
System.InvalidProgramException : Common Language Runtime detected an invalid program.
另一个难题:测试运行器(NUnit 2.2.6的包装器)嵌入在主机应用程序中,测试依赖于运行的这个应用程序并以某种方式配置,所以我不能单独测试dll(使用vstest例如.console.exe)。我需要使用一个工具来监视和过滤在运行时加载的模块,例如OpenCppCoverage,但它也可以分析混合模式程序集的本机部分。
我知道我可以在单独的项目中隔离我们的本机代码并让C ++ / CLI包装器引用它,但我正在寻找一种不涉及重构整个解决方案的解决方案。
由于