ShimNotSupportedException в MS VisualStudio 2012

Я просто пытаюсь ознакомиться с новой платформой Fakes Isolation Framework в Visual Studio 2012 RC, но, следовательно, у меня возникают проблемы сShimNotSupportedExceptions.
С первых попыток, каждый метод подкладки, к которому я пытался подключить делегата, бросалShimNotSupportedException при попытке запустить / отладить тест.

[TestMethod]
public void GetFoo_ValidBar_ReturnsBaz()
{
    using(ShimsContext.Create())
    {
        ShimDateTime.NowGet = () => new DateTime(2012,08,11,10,20,59);

        const string expected = "20120811_102059";
        string actual = GetFoo();

        Assert.AreEqual(expected,actual);
    }
} 

Это соответствующая трассировка стека:

The GetFoo_ValidBar_ReturnsBaz test method has thrown an exception: Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException: System.DateTime at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InvokeEvent(T value, Action1 eh) at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.OnAttachedUnsupportedMethod(MethodBase method) at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.CheckInstrumentation(MethodBase method) at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InternalAttachDetour(Object optionalReceiver, MethodBase method, Delegate detourDelegate) at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.AttachDetour(Object optionalReceiver, MethodBase method, Delegate detourDelegate) at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimMethod(Delegate optionalStub, Object optionalReceiver, MethodBase method) at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes) at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes) at System.Fakes.ShimDateTime.set_NowGet(Func'1 value) at GetFoo_ValidBar_ReturnsBaz() in BazTests.cs: line 48.

Прочитав два потока, которые я обнаружил на MSDN, посвященных этой проблеме, я последовал их инструкциям (отключение CodeCoverage, удаление файла .testsettings), который не работал для меня!
Тем не менее я нашел обходной путь для этой проблемы:
Сначала запустив все тесты из Test Explorer (вместо того, чтобы использовать кнопку «MSTest Test (нажмите для запуска)» непосредственно из области кодирования), все работало правильно, и исключений не было. После этого я мог даже отладить тест, и назначение метода shim работало так, как ожидалось.
Это работало для всех следующих прокладок, которые я использовал.
Но теперь у меня снова возникает та же проблема при попытке реализовать подделки библиотеки MS Enterprise для доступа к базе данных.

Вот как выглядит тест:

[TestMethod]
public void GetFooFromEF_NonEmptyDataReader_ObjectsCorrectlyInstantiated()
{
    using(ShimsContext.Create()){
        var dataReader = new StubIDataReader()
            {
                ItemGetString = s => 1,
                DepthGet = () => 2
            };

        ShimFoo.GetBar = guid => dataReader;

        var bar = new StubIBar()
        {
            ConvertIBarToBaz = record => null
        };

        ShimQux.AllInstances.GetBar = (a, b) => bar;

        var dbFactory = new StubDbProviderFactory();
        var db = new StubDatabase("test", dbFactory);
        ShimDatabaseFactory.CreateDatabaseString = s => db;

        List<BarInformation> actual = accessor.InvokeStatic("GetBar",
                                                                new Object[] { }) as List<BarInformation>;
        Assert.IsTrue(true);
    }
}

Первые два назначения shim (ShimFoo & ShimQux) работают как положено. Но ShimDatabaseFactory.CreateDatabaseString (который должен заставить DatabaseFactory.CreateDatabase (string) возвращать заглушку базы данных при попытке создать новый экземпляр базы данных) снова генерирует исключение ShimNotSupportedException. И я просто не могу понять, почему!
У вас есть идеи, что здесь пошло не так?

Буду признателен за любой вклад по этому вопросу.

Спасибо,
Вениамин

Ответы на вопрос(3)

Ваш ответ на вопрос