我有一个 .DLL,其中包含 COM/DCOM 对象的 .NET 运行时可调用包装器。
我在 VS 2008 中用 C# 编写了一个测试套件,它调用我们在上述 .DLL 中的服务器函数。
打开代码覆盖并运行测试套件时,代码覆盖测试结果没有产生任何统计数据,并且未覆盖和覆盖块都显示为零。
有谁知道为什么会这样?
任何人都知道如何在 .dll 上获得代码覆盖率,它们是 .net 可调用包装器?
我有一个 .DLL,其中包含 COM/DCOM 对象的 .NET 运行时可调用包装器。
我在 VS 2008 中用 C# 编写了一个测试套件,它调用我们在上述 .DLL 中的服务器函数。
打开代码覆盖并运行测试套件时,代码覆盖测试结果没有产生任何统计数据,并且未覆盖和覆盖块都显示为零。
有谁知道为什么会这样?
任何人都知道如何在 .dll 上获得代码覆盖率,它们是 .net 可调用包装器?
我不确定您使用的代码覆盖引擎是如何工作的,但他们通常使用分析 API + 一些反射来确定执行了哪些托管代码。
我怀疑 RCW 主要是本机代码,是托管对象和它们的本机 COM 对应物之间的桥梁。
您可以通过在生成的互操作程序集(托管 COM 对象的 RCW)上运行.NET Reflector来验证这一点,并查看它们实际包含多少托管代码。
但是,一旦您越过了互操作边界,一切都将丢失,那么您将不再处于托管区域。您需要一个本机覆盖工具来从那一侧收集统计信息。