ShimDateTime在System.Fakes中不可用

本文关键字:Fakes System ShimDateTime | 更新日期: 2023-09-27 18:12:59

我正在学习如何在单元测试中使用shims。我正在尝试DateTime的经典例子,从这个链接:http://www.wiliam.com.au/wiliam-blog/getting-started-with-microsoft-fakes

我可以在我的单元测试项目中为System引用添加Fakes,但是当我尝试使用System.Fakes时。ShimDateTime,它告诉我:

The type or namespace name 'ShimDateTime' does not exist in the namespace 'System.Fakes' (are you missing an assembly reference?)

如果我检查系统下有什么可用。假的,我只看到存根和没有垫片,所以我似乎错过了一些东西来产生垫片?

不确定是否相关,但这是来自系统的(默认)内容。假货文件:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System" Version="4.0.0.0"/>
</Fakes>

我使用的是Visual Studio 2015。VS2015 14.0.25420.01更新3,我的项目运行在。net框架4.5.2

事实上,我的项目在为System添加fakes后未能立即编译,因此甚至没有尝试使用ShimDateTime。我得到的编译错误是:

 The type or namespace name 'EventSourceCreatedEventArgs' does not exist in the namespace 'System.Diagnostics.Tracing' (are you missing an assembly reference?)

这来自'UnitTestProject1'obj'Debug'Fakes'm'f。[mqttf::Microsoft.QualityTools.Testing.Fakes.Stubs.StubClass] (typeof(global:: system . em.Diagnostics.Traci·ng. eventsourcecereate·dEventArgs))]

任何人都可以把我放在正确的轨道上,让ShimDateTime在系统下可用。假货?

ShimDateTime在System.Fakes中不可用

我能够在Visual Studio 2015 Update 3上解决这个问题。net 4.5.2项目:

error CS0234: The type or namespace name 'ShimDateTime' does not exist in the namespace 'System.Fakes' (are you missing an assembly reference?)

解决方法是实际将条目添加到mscorlib.fakes XML文件中(而不是像您在System.fakes中所设想的那样)

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"  Diagnostic="false">
  <Assembly Name="mscorlib" Version="4.0.0.0" />
  <StubGeneration>
    <Clear />
  </StubGeneration>
  <ShimGeneration>
    <Clear />
    <Add FullName="System.DateTime!" />
  </ShimGeneration>
</Fakes>

我相信这是因为,正如MSDN上显示的,System。DateTime实际上在mscorlib组件中

根据https://connect.microsoft.com/VisualStudio/feedback/details/1049181/fakes-cant-generate-fakes-dlls-for-system-dll,这是。net Framework 4.5中的一个bug。

将。net Framework更改为4.5.2确实为我解决了这个问题。

我可以通过手动添加对mscorlib.4.0.0.0. faks .dll的引用来解决这个问题,因为某些原因默认情况下不包含该引用。

来源:http://www.infoct.net/vs2015-unit-testing-shimdatetime-missing-in-system-fakes-only-stub-functions-743/