简体   繁体   中英

Is there an MBUnit attribute to run Row tests in the order they were defined

I've tried googling around for this but have found nothing. Basically, I'd like to run each row in the order I defined it. For example, if I have this:

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

I want to be sure that test A is executed before test B, and test B is executed before test C.

As specified in the C# language specifications (page 375):

The order in which attributes are specified (...) is not significant. For instance, the attribute specifications [A][B], [B][A], [A, B], and [B, A] are equivalent.

Therefore, you can never rely on the order in which attributes are defined. Fortunately, Gallio/MbUnit provides a convenient optional parameter to most of its attributes which overcomes that limitation of the language. You need to use the optional parameter Order .

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

Please remark that Order works on other attributes as well. In particular it might be used on [Test] to specify the order in which the tests must run in the fixture.


Otherwise, in order to bind a single test parameter as shown in your example, you may find easier to use [Column] instead of [Row] ; and get rid of any attribute ordering constraint by replacing 3 attributes by only 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`
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM