2011-01-05 15 views
8

estoy usando nunit 2.5.9.10348 y tratando de extraer el nombre de la prueba corriente en caso TearDown para que pueda asignar un nombre de archivo Screengrab el nombre de la prueba sin embargo siempre es nula (véase el documento adjunto imagen). La variable private _context tiene el TestName; sin embargo, esto no me sirve.Nunit - no TestContext.CurrentContext.Test trabajo

Alguien ha tenido éxito al utilizar esta nueva funcionalidad TestContext (desde 2.5.7).

alt text

Respuesta

3

Desde su pantalla veo que _context tiene teclas "TestName" y "Propiedades". Pero TestAdapter busca claves "Test.Name" para Name y "Test.Properties" para Properties. Por lo tanto, hay algo mal con la inicialización de TestContext (creo que se enviaron datos incorrectos a Remoting.Messaging.CallContext).

Después de una pequeña investigación (ver comentarios): Las pruebas de NUnit deben ser ejecutadas por NUnit testig environment para que Context esté disponible.

+0

Probé esto - no joy. Sin embargo, lo que he notado es que el nombre de la prueba solo es nulo dentro del depurador. Las mismas pruebas que se ejecutan dentro de la consola de TeamCity o nunit gui dan como resultado el nombre de la prueba. – redsquare

+0

No sabía que ejecuta pruebas sin GUI. Y se supone que esta es la razón: creo que CallContext se inicializa mediante el entorno de prueba. Si conecta el depurador a la GUI de NUnit, puede ver que CallContext se inicializó correctamente. –

+0

Sí, hice una pequeña investigación: CallContext se inicializa durante la ejecución de las pruebas por parte de NUnit (no por algún complemento a Visual Studion). Hay un método NUnit.Core.TestMethod.RunTestInContext() que configura la información de contexto. Entonces, sin ejecutar esto, el contexto estará vacío. –

0

que tenían el mismo problema. Se le ocurrió cuando en un método TearDown ejecuté método, que en realidad era hacer el desmontaje

[TearDown] 
public void CleanUp() 
{ 
    TestContext.CurrentContext.Test.FullName; //!=null 
    someClassInstance.DoTearDown(); 
} 

class SomeClass 
{ 
    public void DoTearDown() 
    { 
      TestContext.CurrentContext.Test.FullName; //==null 
    } 
} 

no tengo ni idea de por qué, pero parecía tan. ¿Es tu caso?

ACTUALIZACIÓN: Ahora me miraba la pantalla, así que no es su caso :)

0

Mismo problema con R # test runner. Acabo de descargar fuentes NUnit y agregué una solución en TestAdapter para que funcione con r #

 public string Name 
     { 
      get 
      { 
       return (_context["Test.Name"] ?? _context["TestName"]) as string; 
      } 
     } 
+0

release build (en línea durante algunas semanas) http://dl.dropbox.com/u/9569672/dexter/nunit.framework.dll –