为什么我不能伪造Thread.Sleep使用VS假框架

use*_*144 0 shim

我在mscorlib.fakes库中找到伪造的Thread.Sleep时遇到了麻烦.我正在关注http://www.codewrecks.com/blog/index.php/2012/04/27/using-shims-in-visual-studio-11-to-test-untestable-code/

http://msdn.microsoft.com/en-us/library/d00bd51t(v=vs.100).aspx显示Thread.Sleep在mscorlib中,所以我添加了它的假,但System.Threading.Fakes命名空间不包含ShimThread也不是StubThread.线程是一个密封类,但VS假框架应该能够在密封类中伪造静态方法.

Var*_*n K 8

这是非常可能的.默认情况下,Fakes框架不会为mscorlib的大多数类型(包括System.Threading命名空间中的类型)生成填充程序,因为Fakes框架本身使用了mscorlib.因此,只有少数类型是shimmed,但是,您可以通过更改项目中添加的mscorlib.fakes文件来配置此行为.

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
    <Assembly Name="mscorlib" Version="4.0.0.0"/>
    <ShimGeneration>
        <Add Namespace="System.Threading!"/>
    </ShimGeneration>
</Fakes>
Run Code Online (Sandbox Code Playgroud)

现在构建测试项目,您可以在System.Threading命名空间中看到类型的填充程序,包括ShimThread.SleepInt32.

阅读此页面上有关.fakes xml文件的更多信息