НУнит

НУнит
Оригинальный автор(ы)Чарли Пул, Джеймс Ньюкирк, Алексей Воронцов, Майкл Ту, Филип Крейг, Роб Прауз, Симона Бузоли, Нил Колвин
Разработчик(и)Проект NUnit,
.NET Foundation
Стабильный релиз
4.0.0 / 26 ноября 2023 г. ; 14 месяцев назад (2023-11-26)
Репозиторийgithub.com/nunit
Написано вС#
Операционная система.NET Framework , Моно
ТипИнструмент модульного тестирования
ЛицензияЛицензия MIT для 3.0, BSD-style (модифицированная лицензия zlib ) для 2.x
Веб-сайтwww.nunit.org

NUnit — это фреймворк модульного тестирования с открытым исходным кодом для .NET Framework и Mono . Он служит той же цели, что и JUnit в мире Java , и является одной из многих программ в семействе xUnit . [ необходима цитата ]

Функции

  • Тесты можно запускать из консольного средства запуска, в Visual Studio через тестовый адаптер [1] или с помощью сторонних средств запуска.
  • Тесты можно проводить параллельно. [2]
  • Сильная поддержка тестов на основе данных. [3]
  • Поддерживает множество платформ, включая .NET Core , [4] Xamarin Mobile , [5] Compact Framework [6] и Silverlight . [7]
  • Каждый тестовый случай можно добавить в одну или несколько категорий, чтобы обеспечить выборочный запуск. [8]

NUnit предоставляет консольный исполнитель (nunit3-console.exe), который используется для пакетного выполнения тестов. Консольный исполнитель работает через NUnit Test Engine, который предоставляет ему возможность загружать, исследовать и выполнять тесты. Когда тесты должны быть запущены в отдельном процессе, движок использует программу nunit-agent для их запуска. [ необходима цитата ]

NUnitLite runner может использоваться в ситуациях, когда более простой runner более подходит. Он позволяет разработчикам создавать самовыполняющиеся тесты. [ необходима цитата ]

Утверждения

NUnit предоставляет богатый набор утверждений в качестве статических методов класса Assert. Если утверждение не выполняется, вызов метода не возвращается и выдается сообщение об ошибке. Если тест содержит несколько утверждений, то любое из них, следующее за тем, которое не выполняется, не будет выполнено. По этой причине обычно лучше всего попробовать использовать одно утверждение на тест. [ необходима цитата ]

Nunit 3.x поддерживает множественные утверждения.

[Тест] public void ComplexNumberTest () { ComplexNumber result = SomeCalculation ();       Assert.Multiple ( () = > { Assert.AreEqual ( 5.2 , result.RealPart , " Действительная часть " ); Assert.AreEqual ( 3.9 , result.ImaginaryPart , " Мнимая часть" ) ; } ) ; }         

Классическая

До NUnit 2.4 для каждого отдельного утверждения использовался отдельный метод класса Assert. Он продолжает поддерживаться в NUnit, поскольку многие предпочитают его. [ необходима цитата ]

Каждый метод assert может быть вызван без сообщения, с простым текстовым сообщением или с сообщением и аргументами. В последнем случае сообщение форматируется с использованием предоставленного текста и аргументов. [ необходима цитата ]

// Утверждения равенства Assert.AreEqual ( object expected , object actual ) ; Assert.AreEqual ( object expected , object actual , string message , params object [ ] parms ) ;           Assert.AreNotEqual ( ожидаемый объект , фактический объект ) ; Assert.AreNotEqual ( ожидаемый объект , фактический объект , строковое сообщение , параметры object [ ] параметры ) ;           // Утверждения идентичности Assert.AreSame ( object expected , object actual ); Assert.AreSame ( object expected , object actual , string message , params object [ ] parms ) ;           Assert.AreNotSame ( ожидаемый объект , фактический объект ) ; Assert.AreNotSame ( ожидаемый объект , фактический объект , строковое сообщение , параметры object [ ] параметры ) ;           // Утверждения условий // (Для простоты методы с сигнатурами сообщений опущены . ) Assert.IsTrue ( bool condition ) ; Assert.IsFalse ( bool condition ) ;  Assert.IsNull ( объект anObject ) ; Assert.IsNotNull ( объект anObject ) ;  Утверждать . IsNaN ( double aDouble ); Assert.IsEmpty ( string aString ) ; Assert.IsNotEmpty ( string aString ) ;  Assert.IsEmpty ( коллекция ICollection ) ; Assert.IsNotEmpty ( коллекция ICollection ) ;  

Основанный на ограничениях

Начиная с NUnit 2.4, была введена новая модель на основе ограничений . Этот подход использует один метод класса Assertдля всех утверждений, передавая Constraintобъект, который определяет тест, который должен быть выполнен. Эта модель на основе ограничений теперь используется внутри NUnit для всех утверждений. Методы классического подхода были повторно реализованы поверх этой новой модели. [ необходима цитата ]

Пример

Пример тестовой установки NUnit : [ требуется ссылка ]

using NUnit.Framework ; [TestFixture] public class ExampleTestOfNUnit { [Test] public void TestMultiplication () { Assert.AreEqual ( 4 , 2 * 2 , "Multiplication" ); // Эквивалентно, начиная с версии 2.4 NUnit предлагает новый и // более интуитивный синтаксис утверждений , основанный на объектах ограничений // [http://www.nunit.org/index.php?p=constraintModel&r=2.4.7]: Assert.That ( 2 * 2 , Is.EqualTo ( 4 ), " Multiplication constraint -based" ) ; } }                    // В следующем примере показаны разные способы написания одного и того же теста исключения.[ TestFixture ] public class AssertThrowsTests { [Test] public void Tests () { // .NET 1.x Assert.Throws ( typeof ( ArgumentException ), new TestDelegate ( MethodThatThrows )) ; // .NET 2.0 Assert.Throws <ArgumentException> ( MethodThatThrows ) ; Assert.Throws <ArgumentException> ( delegate { throw new ArgumentException ( ) ; } ) ;                      // Используем C# 3.0 Assert . Throws < ArgumentException > ( () => { throw new ArgumentException (); }); } void MethodThatThrows () { throw new ArgumentException (); } }                 // В этом примере показано использование возвращаемого значения для дополнительной проверки исключения.[ TestFixture ] public class UsingReturnValue { [ Test ] public void TestException ( ) { MyException ex = Assert.Throws <MyException> ( delegate { throw new MyException ( " message " , 42 ) ; } ) ; Assert.That ( ex.Message , Is.EqualTo ( " message " ) ) ; Assert.That ( ex.MyParam , Is.EqualTo ( 42 ) ) ; } }                        // Этот пример делает то же самое, используя перегрузку, включающую ограничение.[TestFixture] public class UsingConstraint { [ Test] public void TestException ( ) { Assert.Throws ( Is.Typeof <MyException> () .And.Message.EqualTo ( " message " ) . And.Property ( " MyParam " ) . EqualTo ( 42 ) , delegate { throw new MyException ( " message " , 42 ) ; } ) ; } }                  

ExampleTestOfNUnit.TestMultiplication()Фреймворк NUnit автоматически обнаруживает метод с помощью отражения . [ необходима ссылка ]

Расширения

FireBenchmarks — это надстройка, способная регистрировать время выполнения модульных тестов и генерировать отчеты о производительности в формате XML , CSV , XHTML с диаграммами и отслеживанием истории. Ее основная цель — дать возможность разработчику или команде, работающей с гибкой методологией, интегрировать метрики производительности и анализ в среду модульного тестирования , чтобы легко контролировать и отслеживать эволюцию программной системы с точки зрения сложности алгоритмов и загрузки системных ресурсов. [ необходима цитата ]

NUnit.Forms — это расширение ядра NUnit framework, а также open source. Он специально нацелен на расширение NUnit для возможности обработки элементов пользовательского интерфейса в Windows Forms . По состоянию на январь 2013 года Nunit.Forms находится в стадии альфа-релиза, и с мая 2006 года не было выпущено ни одной версии. [ необходима цитата ]

NUnit.ASP — это прекращенное [9] расширение ядра NUnit framework, также с открытым исходным кодом. Он специально рассматривает расширение NUnit для возможности обработки элементов пользовательского интерфейса тестирования в ASP.Net. [ необходима цитата ]

Смотрите также

Ссылки

  1. ^ "Тестовый адаптер NUnit 3".
  2. ^ "Атрибут, поддающийся распараллеливанию". GitHub .
  3. ^ "TestCaseData". GitHub .
  4. ^ Прауз, Роб (2015-11-04). «Тестирование .NET Core с использованием NUnit 3».
  5. Прауз, Роб (25.03.2015). «NUnit 3.0 Test Runner для Android и iOS».
  6. ^ «NUnit версии 3 для Compact Framework».
  7. ^ "NUnit версии 3 для SilverLight 5.0".
  8. ^ "CategoryAttribute". GitHub . Получено 2015-12-15 .
  9. ^ "Главная страница сайта NUnit.ASP". SourceForge . Получено 2008-04-15 .

Библиография

  • Хант, Эндрю; Томас, Дэвид (2007). Pragmatic Unit Testing in C# with NUnit, 2-е изд. The Pragmatic Bookshelf (Raleigh), 2007. ISBN 0-9776166-7-3 . 
  • Ньюкирк, Джим; Воронцов, Алексей (2004). Разработка через тестирование в Microsoft .NET. Microsoft Press (Редмонд), 2004. ISBN 0-7356-1948-4 . 
  • Гамильтон, Билл (2004). Карманный справочник NUnit . O'Reilly (Кембридж), 2004. ISBN 0-596-00739-6 . 
  • Официальный сайт
  • Сайт GitHub
  • Сайт Launchpad (больше не поддерживается)
  • Разработка через тестирование с использованием NUnit и видеодемонстрации Test-driven.NET
  • Домашняя страница NUnit.Forms
  • Домашняя страница NUnitAsp
  • Статья «Улучшение качества приложений с помощью разработки через тестирование» содержит введение в TDD с конкретными примерами использования Nunit.
  • Инструмент с открытым исходным кодом, который может выполнять тесты NUnit параллельно
  • Чарли Пул, соразработчик
  • Роб Прауз, соразработчик
  • Симоне Бузоли, соразработчик
Retrieved from "https://en.wikipedia.org/w/index.php?title=NUnit&oldid=1187143103"