Есть ли атрибут MBUNIT для прохождения тестов строки в порядке их определения
-
03-10-2019 - |
Вопрос
Я пытался гуглами за это, но ничего не нашел. В основном я хотел бы запустить каждую строку в порядке, который я определил его. Например, если у меня есть это:
[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`
}