2012-07-02 7 views
7

Entiendo, desde MSDN, que ClassInitialize es marcar un método que hará el código de configuración para todas las pruebas, una vez, antes de que se ejecuten todas las pruebas. Cuando incluyo dicho método en el accesorio abreviado a continuación, todas las pruebas fallan. Tan pronto como lo comento, vuelven a pasar.¿Por qué un método decorado ClassInitialize hace que todas mis pruebas fallen?

[TestClass] 
public class AuthenticationTests 
{ 
    [ClassInitialize] 
    public void SetupAuth() 
    { 
     var x = 0; 
    } 

    [TestMethod] 
    public void TestRegisterMemberInit() 
    { 
     Assert.IsTrue(true); 
    } 
} 
+3

¿Qué dice la falla de prueba? –

+1

Ooops. La parte de texto de error de la ventana de pruebas se 'minimizó' hasta el final. Realmente no sabía que estaba allí. Gracias Jon, me hiciste mirar por todos lados y finalmente lo encontraste. – ProfK

Respuesta

16

El método decorada [ClassInitialize] debe ser estática y tome exactamente un parámetro de tipo TestContext:

[ClassInitialize] 
public static void SetupAuth(TestContext context) 
{ 
    var x = 0; 
} 

De hecho, si copia y pega el código en un lugar limpio VS proyecto, el TestRunner explica exactamente que en el mensaje de error:

Método UnitTestProject1.AuthenticationTests.SetupAuth tiene una firma incorrecta. El método debe ser estático, público, no devuelve un valor y debe tomar un solo parámetro de tipo TestContext.

+0

gracias. Como expliqué en un comentario sobre mi pregunta, ese error en el corredor de prueba estaba oculto, es decir, el panel que muestra era demasiado pequeño para que lo viera. – ProfK

2

El método marcado con [ClassInitialize]:

  1. Aplicar a sólo un método de una clase de prueba.
  2. La clase debe estar sellada, es decir, no heredada.
  3. El método debe ser público estático.
  4. El método debe pasar un parámetro TestContext.
  5. El método no devuelve un valor.
0

En VS2015, el no contar con el parámetro TestContext hace que este error lo más servicial a dar salida al ejecutar la prueba (por si alguien está buscando en la excepción, como si estuviera):

excepción lanzada: 'Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeInspectionException' en Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll

Cuestiones relacionadas