Против 2012 года: сборка прокладок

Я пытаюсь сделать прокладку в VS 2012, как она описана на сайте MSDN:

[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

Но когда я скомпилирую свой тестовый проект, я получаю понятие в Output:

предупреждение: некоторые подделки не могут быть сгенерированы. Для получения полной информации установите атрибут Diagnostic элемента Fakes в этом файле на "true" и перестройте проект.

Как я могу разрешить это предупреждение?

Ответ 1

Обновление Visual Studio 2012 1 улучшено генерация кода в подделок, чтобы упростить устранение неполадок генерации кода. Всякий раз, когда Stub или Shim не могут быть сгенерированы для определенного типа, Fakes теперь может генерировать предупреждающее сообщение - вы можете увидеть это в окне списка ошибок Visual Studio.

Однако, чтобы предотвратить превышение количества предупреждений для большой сборки, например System, Fakes по умолчанию генерирует одно предупреждение. Вы можете увидеть полный список предупреждающих сообщений, установив атрибут Diagnostic XML-элемента Fakes в файле .Fakes в "true" или "1" и перестроить проект. (Для примера см. Первую строку кода ниже.)

Чтобы устранить это предупреждение, измените файл .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>

Ответ 2

Я решил это уже один.

Это было .Net Framework 4.0 в свойстве.

Изменение версии 4.5 устраняет проблему.

Ответ 3

Попробуйте удалить файл .Fakes. Я случайно удалил их и скомпилировал, и предупреждения исчезли. Я не уверен, что это такое, но все, кажется, работает нормально. Я думаю, что это заставляет компиляцию перекомпилировать файл подделок, все, что есть сборка.