2010-09-15 29 views
3

J'ai essayé de faire des recherches sur Google pour cela, mais je n'ai rien trouvé. Fondamentalement, je voudrais courir chaque rangée dans l'ordre que je l'ai défini. Par exemple, si j'ai ceci:Existe-t-il un attribut MBUnit pour exécuter les tests Row dans l'ordre dans lequel ils ont été définis?

[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.

Répondre

5

Comme spécifié dans la C# language specifications (page 375):

L'ordre dans lequel les attributs sont spécifiés (...) n'est pas 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 les attributs sont définis. Heureusement, Gallio/MbUnit fournit un paramètre facultatif pratique à la plupart de ses attributs qui surmonte cette limitation de la langue. Vous devez utiliser le paramètre facultatif Order.

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

Veuillez noter que Order fonctionne également sur d'autres attributs. En particulier, il peut être utilisé sur [Test] pour spécifier l'ordre dans lequel les tests doivent s'exécuter dans l'appareil.


Sinon, pour lier un paramètre de test unique comme indiqué dans votre exemple, vous trouverez peut-être plus facile à utiliser [Column] au lieu de [Row]; et se débarrasser de tout attribut de commande contrainte en remplaçant 3 attributs par seulement 1:

[Test] 
[Column("a", "b", "c")] 
public void Test(string s) 
{ 
} 
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` 
} 
+0

Il serait considéré comme agréable pour entourer l'extrait de code par une explication. – zx485