Есть ли атрибут MBUNIT для прохождения тестов строки в порядке их определения

StackOverflow https://stackoverflow.com/questions/3722327

Вопрос

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

[Row("a")]
[Row("b")]
[Row("c")]
[Test]
public void Test(string s)...

Я хочу быть уверен, что тест A выполнен перед тестом B, а тест B выполнен перед тестом C.

Это было полезно?

Решение

Как указано в C # языковые спецификации (стр. 375):

Порядок указан атрибуты (...) не значительны. Например, спецификации атрибута [a] [b], [b] [a], [a, b] и [b, a] являются эквивалентными.

Поэтому вы никогда не можете полагаться на порядок, в котором определены атрибуты. К счастью, Галлио / Мбунит Предоставляет удобный необязательный параметр для большинства его атрибутов, которые преодолевают это ограничение языка. Вам нужно использовать дополнительный параметр Заказ.

[Row("a", Order = 1)]
[Row("b", Order = 2)]
[Row("c", Order = 3)]
[Test]
public void Test(string s)
{
}

Пожалуйста, отметьте это Order Работает на других атрибутах. В частности, это может быть использовано на [Test] Укажите заказ, в котором тесты должны работать в приспособлении.


В противном случае, чтобы связать один тестовый параметр, как показано в вашем примере, вы можете легко использовать [Column] вместо [Row]; И избавиться от какого-либо ограничения упорядочения атрибута путем замены 3 атрибутов на 1:

[Test]
[Column("a", "b", "c")]
public void Test(string s)
{
}

Другие советы

Include 'MbUnit.Framework.TestSequence(1)' and use ProcessTextFixture instead  of TextFixture.
  [ProcessTextFixture]
 public class TestSequeunce
{

    [MbUnit.Framework.TestSequence(1)]
    [TEST]
    public void TestMethod1()
    {
    }

    [MbUnit.Framework.TestSequence(2)]
    [TEST]
    public void TestMethod1()
    {
    }`enter code here`
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top