[.Net] запуск из NUnit в 40 раз медленнее, чем из MSTest
ps
Тормоза могут появляться из-за следующего:
1. NUnit вешает какие-то события на подгрузку assembly, типов и т.д. (или что-то подобное)
2. NUnit может замещать какие-то штатные типы на их прокси.
ps
как меняется время каждого запуска, если функцию Test вызывать несколько раз подряд
psречь только про первую итерацию, потом быстро везде
как меняется время каждого запуска, если функцию Test вызывать несколько раз подряд
1. NUnit вешает какие-то события на подгрузку assembly, типов и т.д. (или что-то подобное)а почему связка MSTest+TestDriven.Net тормозит?
2. NUnit может замещать какие-то штатные типы на их прокси.
а почему связка MSTest+TestDriven.Net тормозит?MSTest+NCrunch тоже тормозит.
MSTest+ReSharper — тест выполняется быстро, если Интернет отключить. А если Интернет включен, то до того, как тест начнет выполняться, есть задержка (в отчете время теста не меняется). Чем медленнее Интернет, тем больше задержка.
а почему связка MSTest+TestDriven.Net тормозит?причины могут быть те же самые. Вешаются какие-то события на подгрузку ассемблей.
ps
кстати, такие framework-и предоставляют функционал, что файлы ассемблей не лочатся на время работы (это делается через перемещение assembly в tmp и подгрузку оттуда). Как раз этот функционал (и связанные с этим проверки) и может добавлять тормоза.
MSTest+ReSharper — тест выполняется быстро, если Интернет отключить.хз. может resharper лицензию или update-ы в инете ищет.
посмотри снифером куда лезет
Тормоза могут появляться из-за следующего:Если это так, то получается, что на больших проектах не используют юнит тестирование? Поскольку NUnit/xUnit тормозные из-за оверхеда при перехвате инфраструктурных вещей, соответственно, когда размер проекта становиться большим оверхед становиться неприемлемым. А для MSTest нет нормального раннера.
1. NUnit вешает какие-то события на подгрузку assembly, типов и т.д. (или что-то подобное)
2. NUnit может замещать какие-то штатные типы на их прокси.
кстати, единственное разумное объяснение: на анализ и копирование файлов сборок должно уходить немало времени, причём делаться это должно один раз, поэтому на повторных запусках и не тормозит. Возможно, там ещё какие-то инструментальные сборки налету создаются (особенно, если не через Emit, а через компиляцию).
Если это так, то получается, что на больших проектах не используют юнит тестирование?юнит тестирование на больших проектах делается в background-е на отдельном сервере - и секунды выполнения, соответственно, не критичны.
Оставить комментарий
6yrop
В коде используется Roslyn. Например, вот этот код:http://stackoverflow.com/q/15365376/2724979
Запуск из:
NUnit — 2116ms
MSTest — 53ms
Консольное приложение — 57ms
Запуск MSTest с помощью TestDriven.Net — 1260ms
Запуск NUnit с помощью TestDriven.Net — 1100ms
Что это может быть?