НУнит
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() | |
![]() NUnit 2.4.6 Графический интерфейс в Windows | |
Оригинальный автор(ы) | Чарли Пул, Джеймс Ньюкирк, Алексей Воронцов, Майкл Ту, Филип Крэйг, Роб Проуз, Симона Бузоли, Нил Колвин |
---|---|
Разработчик(и) | Проект NUnit, Фонд .NET |
Стабильная версия | 4.0.0
/ 26 ноября 2023 г |
Репозиторий | github |
Написано в | С# |
Операционная система | .NET Framework , моно |
Тип | модульного тестирования Инструмент |
Лицензия | Лицензия MIT для 3.0, BSD-стиль (модифицированная лицензия zlib ) для 2.x |
Веб-сайт | www |
NUnit — это с открытым исходным кодом модульного тестирования платформа для .NET Framework и Mono . Он служит той же цели, что и JUnit в мире Java , и является одной из многих программ семейства xUnit . [ нужна ссылка ]
Функции
[ редактировать ]- Тесты можно запускать из консольного средства запуска в Visual Studio через тестовый адаптер. [1] или через сторонних бегунов.
- Тесты можно запускать параллельно. [2]
- Сильная поддержка тестов, управляемых данными. [3]
- Поддерживает несколько платформ, включая .NET Core , [4] Ксамарин Мобайл , [5] Компактная структура [6] и Сильверлайт . [7]
- Каждый тестовый пример можно добавить в одну или несколько категорий, чтобы обеспечить выборочный запуск. [8]
NUnit предоставляет консольный исполнитель (nunit3-console.exe), который используется для пакетного выполнения тестов. Консольный исполнитель работает через механизм тестирования NUnit, который предоставляет ему возможность загружать, исследовать и выполнять тесты. Если тесты необходимо запускать в отдельном процессе, движок использует для их запуска программу nunit-agent. [ нужна ссылка ]
Раннер NUnitLite можно использовать в ситуациях, когда более простой раннер более подходит. Это позволяет разработчикам создавать самовыполняющиеся тесты. [ нужна ссылка ]
Утверждения
[ редактировать ]NUnit предоставляет богатый набор утверждений в виде статических методов Assert
сорт. Если утверждение не выполнено, вызов метода не возвращает результат и сообщается об ошибке. Если тест содержит несколько утверждений, все последующие утверждения не будут выполнены. По этой причине обычно лучше попробовать использовать одно утверждение для каждого теста. [ нужна ссылка ]
Nunit 3.x поддерживает несколько утверждений.
[Test]
public void ComplexNumberTest()
{
ComplexNumber result = SomeCalculation();
Assert.Multiple(() =>
{
Assert.AreEqual(5.2, result.RealPart, "Real part");
Assert.AreEqual(3.9, result.ImaginaryPart, "Imaginary part");
});
}
Классический
[ редактировать ]До NUnit 2.4 существовал отдельный метод Assert
class использовался для каждого отдельного утверждения. Он продолжает поддерживаться в NUnit, поскольку многие люди предпочитают его. [ нужна ссылка ]
Каждый метод утверждения может быть вызван без сообщения, с простым текстовым сообщением или с сообщением и аргументами. В последнем случае сообщение форматируется с использованием предоставленного текста и аргументов. [ нужна ссылка ]
// Equality asserts
Assert.AreEqual(object expected, object actual);
Assert.AreEqual(object expected, object actual, string message, params object[] parms);
Assert.AreNotEqual(object expected, object actual);
Assert.AreNotEqual(object expected, object actual, string message, params object[] parms);
// Identity asserts
Assert.AreSame(object expected, object actual);
Assert.AreSame(object expected, object actual, string message, params object[] parms);
Assert.AreNotSame(object expected, object actual);
Assert.AreNotSame(object expected, object actual, string message, params object[] parms);
// Condition asserts
// (For simplicity, methods with message signatures are omitted.)
Assert.IsTrue(bool condition);
Assert.IsFalse(bool condition);
Assert.IsNull(object anObject);
Assert.IsNotNull(object anObject);
Assert.IsNaN(double aDouble);
Assert.IsEmpty(string aString);
Assert.IsNotEmpty(string aString);
Assert.IsEmpty(ICollection collection);
Assert.IsNotEmpty(ICollection collection);
На основе ограничений
[ редактировать ]Начиная с версии NUnit 2.4, была представлена новая модель , основанная на ограничениях . Этот подход использует единственный метод Assert
класс для всех утверждений, передавая Constraint
объект, определяющий тест, который необходимо выполнить. Эта модель, основанная на ограничениях, теперь используется внутри NUnit для всех утверждений. Методы классического подхода были повторно реализованы поверх этой новой модели. [ нужна ссылка ]
Пример
[ редактировать ]Пример тестового приспособления NUnit : [ нужна ссылка ]
using NUnit.Framework;
[TestFixture]
public class ExampleTestOfNUnit
{
[Test]
public void TestMultiplication()
{
Assert.AreEqual(4, 2*2, "Multiplication");
// Equivalently, since version 2.4 NUnit offers a new and
// more intuitive assertion syntax based on constraint objects
// [http://www.nunit.org/index.php?p=constraintModel&r=2.4.7]:
Assert.That(2*2, Is.EqualTo(4), "Multiplication constraint-based");
}
}
// The following example shows different ways of writing the same exception test.
[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(); });
// Using C# 3.0
Assert.Throws<ArgumentException>(
() => { throw new ArgumentException(); });
}
void MethodThatThrows()
{
throw new ArgumentException();
}
}
// This example shows use of the return value to perform additional verification of the exception.
[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));
}
}
// This example does the same thing using the overload that includes a constraint.
[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); });
}
}
Платформа NUnit обнаруживает метод ExampleTestOfNUnit.TestMultiplication()
автоматически путем отражения . [ нужна ссылка ]
Расширения
[ редактировать ]FireBenchmarks — это надстройка, способная записывать время выполнения модульных тестов и генерировать отчеты о производительности XML , CSV , XHTML с диаграммами и отслеживанием истории. Его основная цель — дать возможность разработчику или команде, работающей с гибкой методологией , интегрировать метрики производительности и анализ в среду модульного тестирования , легко контролировать и отслеживать эволюцию программной системы с точки зрения алгоритмической сложности и загрузки системных ресурсов. [ нужна ссылка ]
NUnit.Forms — это расширение базовой платформы NUnit, а также открытый исходный код. В частности, рассматривается расширение NUnit для возможности тестирования элементов пользовательского интерфейса в Windows Forms . По состоянию на январь 2013 года Nunit.Forms находится в альфа-версии, и с мая 2006 года ни одна версия не выпускалась. [ нужна ссылка ]
NUnit.ASP больше не поддерживается . [9] расширение базовой структуры NUnit и также имеет открытый исходный код. В частности, рассматривается расширение NUnit для возможности тестирования элементов пользовательского интерфейса в ASP.Net. [ нужна ссылка ]
См. также
[ редактировать ]- Автоматизация тестирования
- Список платформ модульного тестирования для языков программирования .NET (включая столбец, в котором указано, какие из них основаны на xUnit)
- XUnit.net
- Юнит
Ссылки
[ редактировать ]- ^ «Тестовый адаптер NUnit 3» .
- ^ «Параллелизуемый атрибут» . Гитхаб .
- ^ «ТестКейсДанные» . Гитхаб .
- ^ Проуз, Роб (04 ноября 2015 г.). «Тестирование .NET Core с использованием NUnit 3» .
- ^ Проуз, Роб (25 марта 2015 г.). «NUnit 3.0 Test Runner для Android и iOS» .
- ^ «NUnit версии 3 для Compact Framework» .
- ^ «NUnit Версия 3 для SilverLight 5.0» .
- ^ «Атрибут категории» . Гитхаб . Проверено 15 декабря 2015 г.
- ^ «Главная страница сайта NUnit.ASP» . СоурсФордж . Проверено 15 апреля 2008 г.
Библиография
[ редактировать ]- Хант, Эндрю; Томас, Дэвид (2007). Прагматическое модульное тестирование на C# с NUnit, 2-е изд. Прагматическая книжная полка (Роли), 2007. ISBN 0-9776166-7-3 .
- Ньюкирк, Джим; Воронцов, Алексей (2004). Разработка через тестирование в Microsoft .NET. Microsoft Press (Редмонд), 2004. ISBN 0-7356-1948-4 .
- Гамильтон, Билл (2004). Карманный справочник NUnit . О'Рейли (Кембридж), 2004 г. ISBN 0-596-00739-6 .
Внешние ссылки
[ редактировать ]- Официальный сайт
- Сайт GitHub
- Сайт Launchpad (больше не поддерживается)
- Разработка через тестирование с использованием NUnit и видеодемонстрация Test-driven.NET
- Домашняя страница NUnit.Forms
- Домашняя страница NUnitAsp
- Статья « Повышение качества приложений с помощью разработки через тестирование» содержит введение в TDD с конкретными примерами использования Nunit.
- Инструмент с открытым исходным кодом, который может параллельно выполнять nunit-тесты.
- Чарли Пул , соразработчик
- Роб Проуз , соразработчик
- Симоне Бузоли , соразработчик