Модульный тест, NUnit или Visual studio?



Я использую Visual studio (иногда resharper) для запуска моего модульного теста.



Я слышал про Нанит, но я не знаю многих вещей об этом...



должен ли я заботиться об этом ? Может ли он предложить что-то лучше, чем visual studio?



должен ли я использовать NUnit и почему?

744   10  

10 ответов:

NUnit имеет несколько преимуществ перед MS-Test

  1. атрибут Suite-может агрегировать тесты и выполнять их отдельно (полезно для больших проектов с быстрыми и медленными тестами, например)
  2. читаемый метод Assert, например Assert.AreEqual(expected, actual) vs Assert.That(actual, Is.EqualTo(expected))
  3. NUnit имеет частые обновления версии-MS-Test имеет только один на версию VS.
  4. много интегрированных бегунов включая Решарпер и TestDriven.NET
  5. ожидаемое утверждение сообщения об исключении - может быть сделано с помощью атрибута в NUnit, но должно быть сделано с помощью Try-Catch в MS-Test
  6. [TestCase]! NUnit позволяет проводить параметризованные тесты.

с моей текущей точки зрения (после 8 месяцев разработки в среднем около 10 разработчиков) я бы посоветовал против использование MSTest по следующим причинам

  • сама по себе структура довольно медленный. Я не имею в виду тестовый код, который вы пишете - это под вашим контролем. Я имею в виду рамки, на которых они работают тесты медленные, независимо от того, работает ли он набор тестов, одиночные тесты ЕТК.
  • необходимость сохранения файла метаданных теста что всегда приводит к осложнениям когда работают несколько разработчиков на нем (воссоздание, например, метаданных так далее.). Все другие тесты не нужен файл метаданных. Это своего рода приятно организовать ваши тесты, но вы смогите достигнуть этих же до конца пространства имен, классы и имена методов.
  • выполняя непрерывную интеграцию, если вы хотите запустить модульные тесты на своей машине сборки, вам нужно будет установить Visual Studio на этой машине.

другими словами, если бы мне пришлось решать снова 8 месяцев назад, я бы, наверное, взять Нанит. Возможно, у меня нет интегрированного отчета о результатах тестирования, но у разработчиков будет более плавный опыт тестирования.

вот мой опыт работы с MS Test

  • мы бежим испытание MS с вокруг испытанием 3800.
  • это занимает очень много времени для тестов просто начать выполнение, что является болезненным при запуске одиночных тестов.
  • для выполнения тестов требуется около 1 ГБ памяти. Нет, это не из-за утечек памяти в наших тестах. Часто мы сталкиваемся с OutOfMemoryExceptions.
  • потому что он использует столько ресурсов, мы начинаем выполнять тесты с пакетный файл. Так для чего же нужна вся эта интеграция?
  • он глючит и нестабилен:
    • например, если вы удалите атрибут [Ignore] из теста, он не распознает его, потому что он кэширует информацию о тестах где-то. Вам нужно обновить список тестов, который иногда решает проблему, или перезапустить VS.
    • Это случайно не копировать ссылки на сборки обнаружил каталог.
    • элементы развертывания (дополнительные файлы для использования) просто не работают должным образом. Они игнорируются случайным образом.
  • существует скрытая (не видимая в тестовом коде) информация в файлах vsmdi и testrunconfig. Если вы не заботитесь об этом, это может не сработать.
  • функционально это может быть сопоставимо с NUnit, но это очень дорого, если вы рассматриваете использование VS tester edition.

дополнение: теперь у нас есть еще несколько тестов, не могу даже сказать сколько. Запустить их невозможно все больше из Visual Studio, из-за OutOfMemoryExceptions и других проблем нестабильности. Мы запускаем тесты из сценариев. Было бы легко просматривать результаты тестирования в Visual Studio, но когда решение открыто, VS аварийно завершает работу (каждый раз). Поэтому нам нужно искать неудачные тесты с помощью текстового поиска. Там нет никаких преимуществ интегрированного инструмента больше.


Еще Одно Обновление: теперь мы используем VS 2013. Многое изменилось. Они переписали тест MS test бегун в третий раз с тех пор, как мы начали. Это вызвало много критических изменений, но ни одна новая версия не делала ничего лучше. Мы рады, что мы не использовали причудливые функции MS Test, потому что все они больше не поддерживаются. Это действительно позор. Мы все еще используем скрипты для сборки и запуска всех модульных тестов, потому что это удобнее. Visual Studio потребовалось несколько минут для запуска тестов (время измеряется после компиляции до первого запуска теста). Они, вероятно, исправляет его с помощью обновление и это может быть конкретной проблемой нашего проекта. Однако Resharper намного быстрее при выполнении тех же тестов.

вывод: по крайней мере, в сочетании с Resharper, MS Test является полезным. И я надеюсь, что они, наконец, узнают, как должен быть написан тестовый бегун, и не будут делать такого рода критические изменения при обновлении Visual Studio в следующий раз.

NUnit можно использовать в сочетании С visual studio. Это фреймворк, а не отдельная программа. Так что вы могли бы заботиться и посмотреть, подходит ли это вам :).

alt текст http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=nunitit&DownloadId=61802

"после установки плагина вы найдете новое подменю в меню Инструменты."

см.http://nunitit.codeplex.com/ для получения дополнительной информации об импорте оно.

кроме того, многое можно найти с помощью поиска SO. этой теме перечисляет преимущества NUnit над стандартным тестированием MS, например.

самым большим преимуществом MS-Test над NUnit является то, что MS-Test может генерировать фиктивные объекты с помощью отражения. Я нашел его очень полезным

NUnit работает со стандартным изданием VS.

NUnit-это платформа модульного тестирования, которая также поддерживается resharper. Я думаю, что вы используете платформу модульного тестирования Microsoft, поэтому NUnit - это просто альтернатива продукту Microsoft;)

вот ссылка на домашнюю страницу NUnit:http://nunit.org/index.php

Я не уверен в других, но NUnit предоставляет хороший графический интерфейс и консоль для запуска модульных тестов, а также вы можете создать отчет о результате выполнения теста NUnit, который даст подробную информацию о том, где тест не прошел или прошел, а также какое время потребовалось для вашего модульного теста

на NUnit тесты не выполняются параллельно. Скорее всего, все тесты выполняются в одном потоке. В MSTest каждый тест создается в отдельном потоке, что приводит к чередованию запусков. Поэтому, если тест A зависит от теста B для его успеха, он, вероятно, потерпит неудачу, поскольку тест B, скорее всего, начнет работать, поскольку тест a выполняется.

Если вы используете Visual Studio, вы должны использовать NUnit для выполнения модульного теста, а если вы используете java(Netbeans), вы должны использовать JUnit для модульного теста.

вот пример для простого модульного теста калькулятора

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SimpleCalculator;
using NUnit.Framework;

namespace CalculatorTest
{
    [TestFixture]
    public class Class1
    {
        public Calculator _calculator;
        [TestFixtureSetUp]
        public void Initialize()
        {
            _calculator = new Calculator();
        }
        [Test]
        public void DivideTest()
        {
            int a = 10;
            int b = 2;
            int expectedValue = a / b;
            int actualvalue = _calculator.Divide(a, b);
            Assert.AreEqual(expectedValue, actualvalue,"Failure");

        }
    }
}

Comments

    Ничего не найдено.