ShimNotSupportedException w MS VisualStudio 2012

Staram się tylko zapoznać z nowym Fakes Isolation Framework w Visual Studio 2012 RC, ale konsekwentnie stykam się z problemamiShimNotSupportedExceptions.
Przy pierwszych próbach każda pojedyncza metoda, którą próbowałem przyłączyć delegatowi, rzuciłaShimNotSupportedException podczas próby uruchomienia / debugowania testu.

[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);
    }
} 

Jest to odpowiedni ślad stosu:

Metoda testowa GetFoo_ValidBar_ReturnsBaz zgłosiła wyjątek: Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException: System.DateTime w Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InvokeEvent (wartość T, Action1 eh) w Microsoft.QualityTools. Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.OnAttachedUnsupportedMethod (metoda MethodBase) w Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.CheckInstrumentation (metoda MethodBase) w Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InternalAttachTestIsolation.UnitTestIsolationRuntime.InternalAttachDetour.UnitTestIsolationRuntime.InternalAttachDetour (Object opcjonalnyReceime.InternalAttachDetour (Object opcjonalny) metoda, Delegate detourDelegate) w Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.AttachDetour (Obiekt opcjonalny Odbiorca, metoda MethodBase, Delegate detourDelegate) w Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimMethod (Delegat opcjonalny Stub, Object opcjonalny Odbiorca, Metoda MethodBase) w Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim (Deleguj opcjonalny Podpisz, Wpisz receiverType, Obiekt opcjonalny Odbiorca, Nazwa łańcucha, Flagi ShimBinding, Wpisz returnType, Wpisz [] parametrTyps) w Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime .SetShimPublicStatic (Deleguj opcjonalny stub, wpisz receiverType, String name, Wpisz returnType, Type [] parameterTypes) w System.Fakes.ShimDateTime.set_NowGet (wartość Func'1) w GetFoo_ValidBar_ReturnsBaz () w BazTests.cs: linia 48.

Po przeczytaniu dwóch wątków, które znalazłem w MSDN zajmujących się tym problemem, zastosowałem się do ich instrukcji (wyłączając CodeCoverage, usuwając plik .testsettings), który nie działał dla mnie!
Niemniej jednak znalazłem obejście tego problemu:
Najpierw uruchamiając wszystkie testy z Eksploratora testów (zamiast używać przycisku „Test MSTest (kliknij, aby uruchomić)” bezpośrednio z obszaru kodowania) wszystko działało poprawnie i nie zgłaszano żadnych wyjątków. Potem mogłem nawet debugować test, a przypisanie do metody shim zadziałało zgodnie z oczekiwaniami.
Dotyczyło to również wszystkich następnych podkładek, których użyłem.
Ale teraz znowu mam ten sam problem, próbując zaimplementować podróbki biblioteki MS Enterprise do dostępu do bazy danych.

Oto jak wygląda test:

[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);
    }
}

Pierwsze dwa zadania shim (ShimFoo i ShimQux) działają zgodnie z oczekiwaniami. Ale ShimDatabaseFactory.CreateDatabaseString (który ma spowodować, że DatabaseFactory.CreateDatabase (string) zwróci bazę danych stub podczas próby utworzenia nowej instancji bazy danych) ponownie wyrzuca ShimNotSupportedException. I po prostu nie mogę zrozumieć dlaczego!
Czy masz jakieś pomysły, co poszło nie tak?

Byłbym wdzięczny za wszelkie uwagi na ten temat.

Dzięki,
Benzoes

questionAnswers(3)

yourAnswerToTheQuestion