是否有MBUnit属性按照定义的顺序运行Row测试

时间:2010-09-15 22:26:21

标签: c# unit-testing mbunit gallio data-driven-tests

我试过谷歌搜索但没找到任何东西。基本上,我想按照我定义的顺序运行每一行。例如,如果我有这个:

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

我想确保测试A在测试B之前执行,测试B在测试C之前执行。

2 个答案:

答案 0 :(得分:6)

C# language specifications(第375页)中所述:

指定属性的顺序(...)并不重要。例如,属性规范[A] [B],[B] [A],[A,B]和[B,A]是等效的。

因此,您永远不能依赖于定义属性的顺序。幸运的是,Gallio/MbUnit为其大多数属性提供了方便的可选参数,克服了语言的限制。您需要使用可选参数Order

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

请注意Order也适用于其他属性。特别是它可以在[Test]上用来指定测试必须在灯具中运行的顺序。


否则,为了绑定单个测试参数,如示例所示,您可能会发现更容易使用[Column]而不是[Row];通过仅用1:

替换3个属性来消除任何属性排序约束
[Test]
[Column("a", "b", "c")]
public void Test(string s)
{
}

答案 1 :(得分:0)

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`
}