Domanda

Ho provato googling in giro per questo, ma hanno trovato nulla. Fondamentalmente, desidero eseguire ogni riga nell'ordine ho definita. Per esempio, se ho questo:

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

Voglio essere sicuro che prova A è eseguito prima della prova B, e il test B è eseguito prima della prova C.

È stato utile?

Soluzione

Come specificato nelle C # specifiche del linguaggio (pagina 375):

L'ordine in cui sono specificati attributi (...) non è significativo. Per esempio, le specifiche di attributo [A] [B], [B] [A], [A, B] e [B, A] sono equivalenti.

Di conseguenza, non si può mai fare affidamento su l'ordine in cui sono definiti gli attributi. Fortunatamente, Gallio / MbUnit fornisce una comoda parametro opzionale per la maggior parte dei suoi attributi che supera questa limitazione della lingua. È necessario utilizzare il parametro opzionale Ordine .

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

Si ricorda che le opere Order su altri attributi pure. In particolare, potrebbe essere utilizzato su [Test] per specificare l'ordine in cui le prove devono eseguire nel dispositivo.


In caso contrario, al fine di impegnare un unico parametro di prova come illustrato nel tuo esempio, si possono trovare più facile da usare [Column] invece di [Row] ; e sbarazzarsi di qualsiasi vincolo di attributo ordinamento sostituendo 3 attributi di solo l'1:

[Test]
[Column("a", "b", "c")]
public void Test(string s)
{
}

Altri suggerimenti

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`
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top