Question

J'ai essayé googler autour pour cela, mais rien trouvé. Au fond, je voudrais courir chaque ligne dans l'ordre je l'ai définie. Par exemple, si j'ai ceci:

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

Je veux être sûr que le test A est exécuté avant le test B, et le test B est exécuté avant le test C.

Était-ce utile?

La solution

Comme indiqué dans les C # spécifications linguistiques (page 375):

L'ordre dans lequel les attributs sont spécifiés (...) est non significatif. Par exemple, les spécifications d'attribut [A] [B], [B] [A], [A, B] et [B, A] sont équivalentes.

Par conséquent, vous ne pouvez jamais compter sur l'ordre dans lequel sont définis les attributs. Heureusement, Gallio / MbUnit fournit un paramètre optionnel pratique pour la plupart de ses attributs qui surmonte cette limitation de la langue. Vous devez utiliser le paramètre optionnel Commander .

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

S'il vous plaît remarquer que les travaux de Order sur d'autres attributs. En particulier, il peut être utilisé sur [Test] pour spécifier l'ordre dans lequel les tests doivent être exécutés dans l'appareil.


Dans le cas contraire, afin de lier un paramètre de test unique comme indiqué dans votre exemple, vous pouvez trouver plus facile à utiliser [Column] au lieu de

Autres conseils

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