11

MSDN サイトで説明されているように、VS 2012 Ultimate でシムを作成しようとしています。

[TestClass]
public class TestClass1
{ 
    [TestMethod]
    public void TestCurrentYear()
    {
        int fixedYear = 2000;

        using (ShimsContext.Create())
        {
          // Arrange:
          // Detour DateTime.Now to return a fixed date:
          System.Fakes.ShimDateTime.NowGet = 
              () =>
              { return new DateTime(fixedYear, 1, 1); };

          // Instantiate the component under test:
          var componentUnderTest = new MyComponent();

          // Act:
          int year = componentUnderTest.GetTheCurrentYear();

          // Assert: 
          // This will always be true if the component is working:
          Assert.AreEqual(fixedYear, year);
        }
    }
}

http://msdn.microsoft.com/en-us/library/hh549176.aspxを参照してください

しかし、テスト プロジェクトをコンパイルすると、出力に次のような情報が表示されます。

警告 : 一部のフェイクを生成できませんでした。詳細については、このファイルの Fakes 要素の Diagnostic 属性を「true」に設定し、プロジェクトを再構築してください。

この警告を解決するにはどうすればよいですか?

4

3 に答える 3

40

Visual Studio 2012 Update 1 では、Fakes でのコード生成が改善され、コード生成の問題のトラブルシューティングが簡素化されました。特定の型に対してスタブまたはシムを生成できなかった場合は常に、Fakes が警告メッセージを生成できるようになりました。これは、Visual Studio の [エラー リスト] ウィンドウで確認できます。

ただし、システムなどの大規模なアセンブリで警告の数が膨大になるのを防ぐために、Fakes は既定で 1 つの警告を生成します。.Fakes ファイルDiagnosticの XML 要素の属性を「true」または「1」に設定し、プロジェクトを再構築すると、警告メッセージの完全なリストを表示できます。(例については、以下のコードの最初の行を参照してください。)Fakes

警告を解決するには、.Fakes ファイルを変更して、テストで必要なスタブとシムのみを生成します。詳細こちら 利用可能なオプションの完全なリスト

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
  <Assembly Name="System" Version="4.0.0.0"/>
  <StubGeneration Disable="true" />
  <ShimGeneration>
    <Clear/>
    <Add FullName="System.DateTime!"/>
  </ShimGeneration>
</Fakes>
于 2012-12-28T18:16:41.380 に答える
2

私はすでにそれを一人で解決しました。

プロパティで.Net Framework 4.0でした。

4.5 に変更すると、問題が解決します。

于 2012-12-28T10:01:06.873 に答える