В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
![]() | |
![]() Графический интерфейс NUnit 2.4.6 для Windows | |
Оригинальный автор(ы) | Чарли Пул, Джеймс Ньюкирк, Алексей Воронцов, Майкл Ту, Филип Крейг, Роб Прауз, Симона Бузоли, Нил Колвин |
---|---|
Разработчик(и) | Проект NUnit, .NET Foundation |
Стабильный релиз | 4.0.0 / 26 ноября 2023 г. (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 . [ необходима цитата ]
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. [ необходима цитата ]