Подтвердить что ты не робот

Как заказать тесты NUnit

Не раз вопрос был задан на SO. Но единственные ответы, которые даны, читаются "вам не нужно заказывать свои модульные тесты, это плохо, потому что" или "вы можете избежать этого, если..."

Я уже знаю, что это плохо, почему это плохо, и методы, чтобы избежать этого. Но это не то, что я хочу знать. Я хотел бы знать, можно ли заказать выполнение тестов NUnit, кроме алфавитного порядка. Быть тупым: я на самом деле хочу, чтобы государство проповедовало от одного теста к другому. Поверьте мне, что у меня есть разумная причина для этого, которая бросает вызов обычной философии.

MSTest имеет возможность "заказанного теста", которая очень полезна в некоторых случаях. Я хотел бы иметь эту способность в NUnit. Это можно сделать?

4b9b3361

Ответ 1

Обход (взломать) - это алфавитность имен тестовых примеров. Смотрите эту тему:

https://bugs.launchpad.net/nunit-3.0/+bug/740539

Использование алфавитного порядка - это обходной путь, который вы можете использовать, но он не документирован и не поддерживается вне визуального порядка отображения. Теоретически это может измениться в любое время. На практике это не изменится до NUnit 3.0, так что вы довольно безопасно используете его в качестве обходного пути

Эта цитата из Charlie Poole, главного разработчика на NUnit.

Также кажется, что у них есть схема приготовления для поддержки упорядоченных тестов в NUnit 3, хотя как они это сделают, все еще обсуждается.

Ответ 2

Обновление для NUnit 3.2.0 - теперь оно поддерживает OrderAttribute.

Атрибут OrderAttribute может быть помещен в тестовый метод для указания порядка выполнения тестов. Пример:

public class MyFixture
{
    [Test, Order(1)]
    public void TestA() { ... }


    [Test, Order(2)]
    public void TestB() { ... }

    [Test]
    public void TestC() { ... }
}

https://github.com/nunit/docs/wiki/Order-Attribute

Ответ 3

Просто обновление для NUnit 2.5.1. Согласно документации есть случаи, когда даже алфавитный порядок не поддерживается.

NUnit TestCaseAttribute

Порядок выполнения

В NUnit 2.5 отдельные тестовые примеры сортируются по алфавиту и выполненных в этом порядке. С NUnit 2.5.1 отдельные случаи не сортируются, но выполняются в порядке, в котором NUnit обнаруживает их. Этот порядок не соответствует лексическому порядку атрибутов и часто будут различаться между различными компиляторами или различными версиями CLR.

В результате, когда TestCaseAttribute появляется несколько раз по методу или когда другие атрибуты предоставления данных используются в сочетании с TestCaseAttribute, порядок тестовых случаев undefined.

Ответ 4

Попробуйте использовать аргумент NameParameters, чтобы передать TestName с нужной строкой, чтобы TestCase() упорядочивался по TestName.

    [TestCase(..., TestName = "1stTest")]
    [TestCase(..., TestName = "2ndTest")]

Ответ 5

для Nuint вы можете использовать следующий код.

[TestMethod]
    [Priority(2)]