Jump to content

НУнит

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

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. [ нужна ссылка ]

См. также

[ редактировать ]
  1. ^ «Тестовый адаптер NUnit 3» .
  2. ^ «Параллелизуемый атрибут» . Гитхаб .
  3. ^ «ТестКейсДанные» . Гитхаб .
  4. ^ Проуз, Роб (04 ноября 2015 г.). «Тестирование .NET Core с использованием NUnit 3» .
  5. ^ Проуз, Роб (25 марта 2015 г.). «NUnit 3.0 Test Runner для Android и iOS» .
  6. ^ «NUnit версии 3 для Compact Framework» .
  7. ^ «NUnit Версия 3 для SilverLight 5.0» .
  8. ^ «Атрибут категории» . Гитхаб . Проверено 15 декабря 2015 г.
  9. ^ «Главная страница сайта 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 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3d592500b1a35f69744094429306e060__1701100920
URL1:https://arc.ask3.ru/arc/aa/3d/60/3d592500b1a35f69744094429306e060.html
Заголовок, (Title) документа по адресу, URL1:
NUnit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)