我正在尝试在我们小组正在支持的已经开发的应用程序中进行一些测试。尽管它使用了一些c ++ dll,并且某些内存管理是“手动”开发的,但它在c#中是最多的。请不要告诉我如何在c#中进行内存管理...代码已编写并且可以正常工作,我只是在尝试编写测试。 SUT是.NET Standard 2.0,我的测试类(此时)是.NET Framework 4.6.2,但我想我可以更改它。编辑:对于测试项目和SUT,项目绝对选中了“允许不安全代码”复选框。
无论如何,SUT有一个扩展方法和一个我需要使用的属性。一个是:
SUT.SourcePtr
,可提供void*
的回报
另一个是
SUT.CopyFrom(void*)
,我想您可以看到前进的方向。
Firstpass,我只是想让我的测试验证我是否可以运行以下示例,假设两个对象都已正确实例化:
sut1.CopyFrom(sut2.SourcePtr);
出于明显的原因,我需要这样:
unsafe
{
sut1.CopyFrom(sut2.SourcePtr);
}
但是当这些行位于[TestMethod]
中时,测试浏览器将不会运行测试。它不是说它被跳过,只是不运行它。测试结果显示:
[12/10/2018 12:19:51 PM信息性]执行测试方法“ ..” [12/10/2018 12:19:51 PM信息性] ------开始运行测试------ [12/10/2018 12:19:57 PM信息性] ===========运行测试完成:0运行(0:00:05.5860315)=========
但是...如果我做一个单独的测试声明为public unsafe void LoadSutUnsafe()
,它运行良好(第一个示例是[DataTestMethod]
(但是当我更改新属性时,它不会改变)行为),如果有帮助的话。
有人知道发生了什么事吗?