2009-05-12 9 views
7

he actual tiene una línea en la parte superior de todas mis pruebas que tiene este aspecto:mostrará el nombre de la prueba actual a través del uso de código en [Configuración] método

Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name); 

parece que había Sé bueno si pudiera poner esto en mi método Init (el etiquetado con [Setup]). Pensé que esto funcionaría, pero no importa qué número ponga para el marco de pila, lo más cercano que puedo obtener es Init. No es lo que quieren, pero muy cerca:

string methodName = new StackFrame(0).GetMethod().Name; 
Console.WriteLine(methodName); 

creo que esto podría no ser posible, dada la forma en que se ejecuta Nunit pruebas.

¿Por qué haces esto? Porque en mi salida de consola sería bueno ver dónde comenzó una nueva prueba, de modo que si ambos aciertan al mismo código y emiten diferentes valores, sabré cuál hizo qué, sin tener que depurar.

+0

La respuesta por @Miwil es una solución mucho mejor - que sería considerar cambiar la respuesta aceptada? – skolima

+0

@skolima seguro, si obtiene más votos positivos que la respuesta – jcollum

Respuesta

6

TestCaseAttribute no se agregó hasta NUnit 2.5, que podría ser el motivo por el que no puede encontrarlo. Pero no ayudaría de todos modos. Desafortunadamente, el método SetUp se llama antes del método de prueba, no desde el contexto del método de prueba (por lo que no aparecerá en la pila de llamadas).

Afortunadamente, ¡NUnit ya es compatible con lo que está tratando de hacer! Desde la GUI, vaya a Herramientas> Opciones> GUI> General> Salida de texto y marque 'Mostrar etiquetas TestCase'. O bien, para el corredor de la consola, simplemente agregue /labels a los parámetros.

0

Puede usar NUnit.Core.NUnitFramework.TestCaseAttribute para obtener el nombre de la prueba actual.

+0

aceptada, el primer problema es que eso no existe. Lo más cerca que encontré fue 'NUnit.Core.NUnitFramework.TestAttribute' que devolvió un valor de' 'NUnit.Framework.TestAttribute" '. – jcollum

13

El siguiente me podría ayudar:

string testName = NUnit.Framework.TestContext.CurrentContext.Test.Name; 
string testFullName = NUnit.Framework.TestContext.CurrentContext.Test.FullName; 
1

Aquí es la VB que utilizo para registrar cada prueba en un archivo:

<SetUp()> 
Public Sub Setup() 
    Logging.logTest(NUnit.Framework.TestContext.CurrentContext.Test.Name) 
End Sub 
Cuestiones relacionadas