Насколько быстрее NUnit по сравнению с MSTest? - PullRequest
8 голосов
/ 27 сентября 2010

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

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

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 02 октября 2010

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

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

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

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

2 голосов
/ 27 сентября 2010

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

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

...