4

使用 Visual Studio 2012 生成带有“Add Fakes Assembly”的存根,一切都按预期工作,除了无法为此接口生成存根:

public interface IFileWrapper
{
    IEnumerable<string> ReadLines(string path);
    bool Exists(string path);
    Stream OpenReadStream(string path);
}

当我将 Stream 更改为 FileStream 时(因为 Stream 是一个抽象类,我想检查这是否只发生在抽象类中),我仍然无法生成。当我完全删除方法签名(即删除Stream OpenReadStream(string path);)时,我能够生成存根。

这是我的 .fake 文件内容:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true" Verbosity="Noisy">
  <Assembly Name="System.IO.Abstractions"/>
  <StubGeneration>
    <Clear />
    <Add AbstractClasses="true"/>
    <Add Interfaces="true"/>
  </StubGeneration>
  <ShimGeneration>
    <Clear />
  </ShimGeneration>
</Fakes>
  1. 知道为什么会发生这种情况,我该如何避免?
  2. 应该有一个 Visual Studio 输出面板,其中将显示 Fake 生成结果。我看不到任何东西,它们也没有显示在常规构建面板中。我可以在哪里找到它的任何想法?我搜索了所有 VS 2012 菜单。
4

1 回答 1

0

这是由于 Fakes 当前实施的限制造成的。您可以通过将单元测试项目中的目标框架从 4.0 切换到 4.5 来解决此问题。

于 2012-10-16T19:20:15.610 回答