¿Hay un atributo MbUnit para ejecutar las pruebas de fila en el orden en que fueron definidos
-
03-10-2019 - |
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.
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`
}