Насколько быстрее NUnit по сравнению с MSTest

Рой Osherove, автор Искусство Модульного Тестирования, и прокомментировал в блоге, что из многих вещей, которые NUnit якобы делает лучше, это много быстрее является одним из них.

мой вопрос в том, насколько быстрее, если вообще? Мы говорим о порядке величины? 10%? 50%?

Я спрашиваю это потому, что на данный момент я не могу сравнивать. Я пытаюсь настроить свой тестовый проект, чтобы быть в двойной режим чтобы я мог переключаться между ними. К сожалению, у меня возникла проблема с интеграцией NUnit с последней версией Microsoft Moles, а также NUnit конфликтует с сторонней библиотекой (появляется log4net related).

пока MSTest кажется намного проще использовать в Visual Studio 2008. Все проблемы с версией и проблемы совместимости с NUnit (по крайней мере, для меня) направляют меня к выбору MSTest в качестве основы для проект (хотя я могу сохранить опцию двойного режима). Еще одним плюсом для MSTest является то, что я все еще могу использовать большинство утверждений NUnit:

using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;

но.... Если скорость действительно намного быстрее в Нанит, то я бы предпочел, чтобы использовать его, несмотря на болевые точки.

наконец, было ли улучшение скорости в VS2010 для MSTest?

2 ответов


Ну, я потратил время, чтобы удалить Microsoft Moles и производственный код, который занимался проблемами, связанными с log4net, чтобы я мог фактически сравнить их. Затем я провел тесты как в MSTest 2008, так и в NUnit 2.5.2.

Я узнал, что MSTest лучше сообщает время продолжительности каждого отдельного теста. Если тест достаточно быстр в NUnit, он регистрируется как 0 секунд как в TestResults.xml-файл и в GUI, когда один нажимает на свойства теста. Тем не менее, я попытался сравнить сумму всех тестовых скоростей, и в некоторых случаях NUnit быстрее, а в других случаях MSTest быстрее. Когда один быстрее, чем другой, это примерно на 30%.

теперь, где NUnit определенно кажется быстрее, это время ожидания до запуска модульных тестов. Когда я подключаю GUI (или консоль) к отладчику VS и запускаю тестовый проект, для запуска и загрузки NUnit требуется около 3-6 секунд, прежде чем тесты смогут выполняться. С MSTest это занимает от 15-20 секунд. Для MSTest не имеет значения, есть ли только 1 Тест или 26, это время загрузки кажется одинаковым. Что касается того, как эти времена ожидания масштабируются по мере увеличения тестового проекта, скажем, в тысячах модульных тестов, я не могу прокомментировать разницу, хотя мне было бы очень интересно узнать.

в MSTest также есть небольшая задержка во время выполнения тестов, возможно, для обновления области результатов. Таким образом, я подозреваю, что когда люди говорят, что NUnit намного быстрее, чем MSTest, это из-за задержек загрузки и обновления, но фактическое время выполнения теста кажется очень похожим.


Я использовал как MSTest, так и NUnit (Первый больше, чем последний), и я не могу сказать, что заметил большие различия между ними в отношении скорости (не поймите меня неправильно, разница может быть там, я просто не заметил этого).

причина, по которой я выбираю MSTest, - это его интеграция с Visual Studio, так как это делает thigns намного проще. Кроме того, когда-то у меня были проблемы с запуском нескольких тестов, потому что тесты NUnit выполнялись в другом потоке, чем MSTests.