Frage

Ich habe versucht, für diese googeln herum, aber haben nichts gefunden. Grundsätzlich würde Ich mag jede Zeile in der Reihenfolge ausführen ich es definiert. Zum Beispiel, wenn ich diese:

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

Ich möchte sicher sein, dass Test A vor dem Test B ausgeführt wird, und Test B wird vor dem Test C ausgeführt wird.

War es hilfreich?

Lösung

angegeben Wie in den Sprache C # Spezifikationen (Seite 375):

Die Reihenfolge, in der Attribute angegeben werden (...) ist nicht signifikant. Beispielsweise kann die Attributspezifikationen [A] [B], [B] [A], [A, B] und [B, A] sind äquivalent.

Sie können daher nie auf die Reihenfolge verlassen, in der Attribute definiert sind. Glücklicherweise Gallio / MbUnit bietet einen bequemen optionalen Parameter zu den meisten seiner Attributen, die diese Beschränkung der Sprache überwinden. Sie benötigen den optionalen Parameter Auftrag .

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

Erwähnen Sie bitte, dass Order Arbeiten auf andere Attribute. Insbesondere könnte es auf [Test] verwendet werden, um die Reihenfolge festlegen, in der die Tests in der Vorrichtung ausgeführt werden muss.


Ansonsten, um einen einzelnen Testparameter zu binden, wie in Ihrem Beispiel gezeigt, können Sie leichter zu bedienen [Column] anstelle von

Andere Tipps

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