Pregunta

He tratado alrededor de google para esto, pero no han encontrado nada. Básicamente, me gusta correr cada fila en el orden he definido. Por ejemplo, si tengo esto:

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

Quiero estar seguro de que la prueba A se ejecuta antes de la prueba B, y la prueba B se ejecuta antes de la prueba C.

¿Fue útil?

Solución

Como se especifica en las C # especificaciones del lenguaje (página 375):

El orden en el que se especifican los atributos (...) no es significativa. Por ejemplo, las especificaciones de atributos [A] [B], [B] [A], [A, B] y [B, A] son ??equivalentes.

Por lo tanto, nunca se puede confiar en el orden en el que se definen los atributos. Afortunadamente, Galio / MbUnit proporciona un parámetro opcional conveniente para la mayoría de sus atributos que supera esa limitación de la lengua. Es necesario utilizar el parámetro opcional Solicitar .

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

Por favor, observa que las obras Order sobre otros atributos. En particular, podría ser utilizado en [Test] para especificar el orden en el que las pruebas se deben ejecutar en el dispositivo.


Por lo demás, a fin de obligar un único parámetro de prueba como se muestra en el ejemplo, se puede encontrar más fácil de usar [Column] en lugar de [Row] ; y deshacerse de cualquier restricción de atributo de ordenación mediante la sustitución de 3 atributos sólo un 1:

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

Otros consejos

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`
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top