Есть ли атрибут MBUnit для запуска тестов строк в порядке их определения? - PullRequest
4 голосов
/ 16 сентября 2010

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

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

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

Ответы [ 2 ]

6 голосов
/ 16 сентября 2010

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

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

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

[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)
{
}
0 голосов
/ 21 декабря 2016
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`
}
...