2016-10-14 19 views
6

Uczę się o używaniu podkładek w testach jednostkowych. Próbuję Klasycznym przykładem z DateTime, z tego linku: http://www.wiliam.com.au/wiliam-blog/getting-started-with-microsoft-fakesShimDateTime nie jest dostępny w System.Fakes

mogę dodać Fakes na odniesienie System w moim projekcie badanej jednostki, ale gdy następnie spróbuj użyć System.Fakes.ShimDateTime, mówi mi:

The type or namespace name 'ShimDateTime' does not exist in the namespace 'System.Fakes' (are you missing an assembly reference?) 

Gdybym sprawdzić, co jest dostępne pod System.Fakes, widzę tylko odcinki i żadnych podkładek, więc wydaje mi czegoś brakuje, aby wygenerować podkładki, jak również?

Nie jestem pewien, czy to istotne, ale to jest (domyślnie) zawartość z pliku System.fakes:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"> 
    <Assembly Name="System" Version="4.0.0.0"/> 
</Fakes> 

Używam Visual Studio 2015. VS2015 14.0.25420.01 Update 3 i My projekt działa w .NET Framework 4.5.2

W rzeczywistości mój projekt nie kompiluje się zaraz po dodaniu podróbek do Systemu, więc nawet bez prób użycia ShimDateTime. Błąd kompilacji pojawia się:

The type or namespace name 'EventSourceCreatedEventArgs' does not exist in the namespace 'System.Diagnostics.Tracing' (are you missing an assembly reference?) 

A to pochodzi z \ UnitTestProject1 \ obj \ Debug \ Podróbki \ m \ f.csproj i f.cs plików na linii: [mqttf :: Microsoft.QualityTools.Testing. Fakes.Stubs.StubClass (typeof (global :: Syst em.Diagnostics.Traci ng.EventSourceCreate dEventArgs))]

Ktoś, kto może umieścić mnie na właściwej ścieżce, aby uzyskać ShimDateTime dostępne w System.Fakes?

+0

Próbowałem utworzyć pusty projekt unittest, stworzył zespół podróbki z odniesieniem System.dll, aw moim testu mam ShimDateTime normalnie dostępne –

+0

tutaj można go zobaczyć http://tinypic.com/r/4qsh89/9 –

+0

Wypróbowałem to samo podejście, zacząłem od zera z nowym projektem testu jednostek, dodałem podróbki na referencji do systemu, a następnie spróbowałem dodać twój kod. Nadal dostaję błąd na ShimDateTime. W rzeczywistości od razu mam błąd podczas kompilowania projektu po dodaniu podróbek dla systemu: Typ lub przestrzeń nazw "EventSourceCreatedEventArgs" nie istnieje w przestrzeni nazw "System.Diagnostics.Tracing "(czy brakuje odniesienia do zestawu?) – Baz

Odpowiedz

3

udało mi się rozwiązać ten problem w Visual Studio 2015 Update 3 dla .NET 4.5.2 projektu:

error CS0234: The type or namespace name 'ShimDateTime' does not exist in the namespace 'System.Fakes' (are you missing an assembly reference?) 

Rozwiązaniem jest faktycznie dodać wpis do pliku mscorlib.fakes XML (a nie jak ty może zakładać w System.fakes)

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="false"> 
    <Assembly Name="mscorlib" Version="4.0.0.0" /> 
    <StubGeneration> 
    <Clear /> 
    </StubGeneration> 
    <ShimGeneration> 
    <Clear /> 
    <Add FullName="System.DateTime!" /> 
    </ShimGeneration> 
</Fakes> 

wierzę, to dlatego, że, jak pokazano here on MSDN, System.DateTime jest rzeczywiście w zespole mscorlib.

Powiązane problemy