使用 Microsoft Fakes 填充 SerialPort 对象

Using Microsoft Fakes to shim SerialPort object

我想为调用 System.IO.Ports.SerialPort 对象的 class 编写单元测试。我需要 return canned/simulated 来自假串口的数据。当我为 System.dll 创建 Fakes 程序集时,它会生成 System.IO.Ports.Fakes.StubSerialPort 但不会生成 System.IO.Ports.Fakes.ShimSerialPortStubSerialPort 似乎不包含很多方法,大部分只是构造函数。我在任何地方都找不到这样做的例子,所以我在这里发帖。我是 运行 VS 2017 企业。

微软的回答here

出于性能原因,默认情况下,Fakes 不会在 System/mscorlib 模块中为所有类型生成垫片。要告诉它为 "System.IO.Ports" 生成垫片,您可以在 mscorlib.fakes 和 system.fakes 中为您的项目设置以下内容:

<ShimGeneration>
    <Add Namespace="System.IO.Ports!"/>
</ShimGeneration>