Первый тест NUnit очень медленный с Entity Framework в Resharper - PullRequest
7 голосов
/ 23 августа 2011

Есть ли какое-нибудь решение для медлительности первого теста NUnit при использовании Entity Framework 4.1?

Я считаю, что для первого теста требуется около 10 секунд, остальные мои тесты выполняются в 0.01секунд (в соответствии с параметром Resharper Show Time)

Если я запускаю тесты с использованием графического интерфейса NUnit, первый тест снова занимает 10 секунд, но если я перезапущу весь набор тестов, он запускается менее чем за 0,5 секунды... пока я не перекомпилирую решение

У меня также есть тесты NUnit службы WCF, размещенной в IIS, которая вызывает EF, и первая из них завершается примерно через 3 секунды.,Затем, если я перезапущу тесты, это будет до 1 секунды, и, как и ожидалось, при перекомпиляции первый раз вернется к 3 секундам.

Но исходные тесты NUnit, которые относятся к библиотеке классов с вызовом методовEF, всегда около 10 секундной отметки, то есть без уменьшения во времени

Хорошо, я понимаю, что IIS «что-то» делает [что?] , нов обоих случаях я использую NUnit для выполнения вызовов ... почему одна 10+ секунд для первого вызова, другой 3 секунды, а затем 1 секунда для последующих вызовов ??

И, чтобы действительно смущать меняЯ написал простое консольное приложение, которое вызывает один из EF с использованием методов в тестируемом классе, и оно завершается за 1 секунду.

ОБНОВЛЕНИЕ ... те же тесты повторнозаписанный как тесты MSTest, завершают первый тест примерно за 3,5 секунды, что сравнимо с первым тестовым прогоном в средстве выполнения NUnit с графическим интерфейсом, поэтому, похоже, проблема заключается в средстве выполнения теста Resharper для NUnit в Visual Studio

ОБНОВЛЕНИЕ 2 ... да,Похоже, что проблема в том, что это тестер Resharper.TestDriven.NET и Visual Nunit 2010 работают быстрее.

ОБНОВЛЕНИЕ 3 ... и теперь оно регистрируется как JetBrains как проблема

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

Это обычное поведение, потому что первый тест должен будет скомпилировать "EF views" - это происходит при первом использовании чего-либо, отображенного в вашей модели.Затем те же скомпилированные представления кэшируются и используются повторно.Этого можно избежать, но для этого необходимо вручную сгенерировать код для представлений ( с помощью EdmGen.exe ), добавить этот код в проект и скомпилировать вместе с решением.Вам придется делать это каждый раз, когда вы что-либо изменяете в EDMX, если вы не сделаете это как какое-то действие перед сборкой в ​​вашем проекте (это, в свою очередь, замедлит вашу сборку).

1 голос
/ 04 августа 2014

Разница между различными бегунами может быть связана с используемой платформой (x64 и x86). EF намного медленнее запускается в режиме x64.

...