2011-06-06 13 views
21

Más de una vez the question has been asked en SO. Pero las únicas respuestas dadas dicen "no deberías necesitar ordenar tus pruebas unitarias, es malo porque" o "puedes evitar eso si ..."Cómo solicitar Pruebas NUnit

Ya sé que es malo, por qué es malo y técnicas para evitarlo Pero eso no es lo que quiero saber. Me gustaría saber si es posible ordenar la ejecución de pruebas de NUnit, que no sea un orden alfabético. Para ser francos: en realidad quiero que el estado se propague de una prueba a la siguiente. Créeme que tengo una razón inteligente para esto, que desafía la filosofía habitual.

MSTest tiene la capacidad de "prueba ordenada", que es muy útil en ciertos casos. Me gustaría tener esa habilidad en NUnit. Se puede hacer?

Respuesta

9

El truco (truco) consiste en alfabetizar los nombres de casos de prueba. Ver este tema:

https://bugs.launchpad.net/nunit-3.0/+bug/740539

Basándose en orden alfabético es una solución que se puede usar, pero no es documentado y apoyado más allá del orden visual de la pantalla. En teoría, podría cambiar en cualquier momento. En la práctica, no cambiará hasta NUnit 3.0, por lo que es bastante seguro usarlo como una solución

Esta cita es de Charlie Poole, el desarrollador principal de NUnit.

También parece que tienen un esquema de cocción para admitir las pruebas ordenadas en NUnit 3, aunque cómo lo harán todavía está en discusión.

5

Solo una actualización para NUnit 2.5.1. Según la documentación, hay casos en los que incluso el orden alfabético no es compatible.

NUnit TestCaseAttribute

orden de ejecución

En NUnit 2.5, casos de prueba individuales están ordenados alfabéticamente y ejecutados en ese orden. Con NUnit 2.5.1, los casos individuales no están clasificados en , sino que se ejecutan en el orden en que NUnit los descubre. Esta orden no sigue el orden léxico de los atributos y a menudo variará entre compiladores diferentes o diferentes versiones de CLR.

Como resultado, cuando TestCaseAttribute aparece varias veces en un método o cuando otros atributos de datos que proporcionan se utilizan en combinación con TestCaseAttribute, el orden de los casos de prueba no está definido.

2

Intente utilizar NameParameters argumento para pasar el TestName con una cadena que desee, con el fin TestCase() para ser ordenados por TestName.

[TestCase(..., TestName = "1stTest")] 
    [TestCase(..., TestName = "2ndTest")] 
16

Actualización para NUnit 3.2.0 - ahora es apoyar OrderAttribute.

El OrderAttribute se puede colocar en un método de prueba para especificar el orden en que se ejecutan las pruebas. Ejemplo:

public class MyFixture 
{ 
    [Test, Order(1)] 
    public void TestA() { ... } 


    [Test, Order(2)] 
    public void TestB() { ... } 

    [Test] 
    public void TestC() { ... } 
} 

https://github.com/nunit/docs/wiki/Order-Attribute

0

para Nuint puede utilizar el código siguiente.

[TestMethod] 
    [Priority(2)] 
Cuestiones relacionadas