2016-10-14 9 views
6

Я изучаю использование прокладок в модульных тестах. Пытаюсь классический пример с DateTime, по этой ссылке: http://www.wiliam.com.au/wiliam-blog/getting-started-with-microsoft-fakesShimDateTime недоступно в System.Fakes

Я могу добавить Фальшивки для системы координат, в моем тестовом проекте единицы, но когда я затем попытаться использовать System.Fakes.ShimDateTime, он говорит я:

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

Если я проверить то, что доступно под System.Fakes, я вижу только окурки и никаких прокладок, так что кажется, я что-то не хватает для создания прокладок, а?

Не уверен, если это уместно, но это (по умолчанию) содержимое из файла System.fakes:

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

Я использую Visual Studio 2015. VS2015 14.0.25420.01 Update 3, и мой проект запущен в .NET Framework 4.5.2

На самом деле мой проект не удается скомпилировать сразу после добавления подделок для системы, поэтому даже не пытайтесь использовать ShimDateTime. Ошибка компиляции я получаю:

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

И это приходит из \ UnitTestProject1 \ OBJ \ Debug \ Подделки \ м \ f.csproj и f.cs файл в строке: [mqttf :: Microsoft.QualityTools.Testing. Fakes.Stubs.StubClass (typeof (global :: Syst em.Diagnostics.Traci ng.EventSourceCreate dEventArgs))]

Любой, кто может поставить меня на правильный трек, чтобы получить ShimDateTime в System.Fakes?

+0

Я попытался создать пустой проект UnitTest, создал подделок сборку из ссылки System.dll, и в моем тесте у меня есть ShimDateTime обычно доступны –

+0

здесь вы можете увидеть его HTTP://tinypic.com/r/4qsh89/9 –

+0

Пробовал тот же подход, начинаем с нуля с нового проекта Unit Test, добавляем подделки в ссылку System, а затем пытаемся добавить ваш код. Я все еще получаю сообщение об ошибке в ShimDateTime. На самом деле у меня сразу возникает ошибка при компиляции проекта после добавления подделок для System: Тип или имя пространства имен «EventSourceCreatedEventArgs» не существует в пространстве имен «System.Diagnostics».Трассировка '(вам не хватает ссылки на сборку?) – Baz

ответ

3

Я был в состоянии решить эту проблему на Visual Studio 2015 Update 3 для проекта .NET 4.5.2:

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

Исправление на самом деле добавить запись в файл mscorlib.fakes XML (а не как вы может предположить, в 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> 

Я считаю, что это происходит потому, что, как показано here on MSDN, System.DateTime на самом деле в mscorlib сборки.