2011-10-28 21 views
5

He creado un servicio WCF y estaba intentando probar uno de los métodos. Hice clic derecho en el método de servicio WCF y seleccioné la prueba de unidad de creación.Prueba unitaria Método WCF

Creó un nuevo proyecto de prueba y creó una prueba unitaria.

He intentado ejecutar el proyecto de prueba, pero no estoy seguro de cuál debería ser el valor UrlToTest? He puesto url al servicio.

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\VS Projects\\NetBranch4\\" + 
    "MobileCheckCapture\\MobileCheckCapture", "/")] 
// [UrlToTest("http://localhost:45651/")] 
[UrlToTest("http://localhost/mobilecc/mobilecc.svc")] 
public void AuthenticateUserTest() 
{ 
    // TODO: Initialize to an appropriate value 
    MobileCC target = new MobileCC(); 

    // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; 

    // TODO: Initialize to an appropriate value 
    string expected = string.Empty; 
    string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

Respuesta

3

El tipo de host, AspNetDevelopmentServerHost y UrlToTest son parámetros utilizados para ASP.NET unittest, no WCF. Simplemente comente esos atributos, establezca sus parámetros de entrada y asiente y ejecute la prueba.

[TestMethod()] 
public void AuthenticateUserTest() 
{  
    MobileCC target = new MobileCC(); // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; // TODO: Initialize to an appropriate value 
    string expected = string.Empty; // TODO: Initialize to an appropriate value  string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

Espero que esto ayude.

+0

Gracias funciona ahora, pero me han puesto un punto de rotura en efectivo = objetivo .AuthenticateUser (authenticateRequest); no se rompe y me permite depurar el método wcf – user228777

+0

Vaya a Prueba en el menú VS, seleccione "Depurar -> Prueba en el contexto actual". También hay opciones para ejecutar la prueba en las barras de herramientas de herramientas de prueba en VS. –

+0

No veo la opción Prueba en contexto actual debajo del menú de depuración, ¿Necesito entrar en las opciones para configurarlo? gracias – user228777

4

Es mejor que haga sus propias pruebas a mano, en lugar de tener VS compilación para usted. Simplemente actualice el servicio como si fuera una clase normal dentro de su prueba y llame a la función, afirme contra el valor que espera recuperar. Todos mis servicios WCF se prueban como clases normales, ahora en realidad conectarme al servicio y obtener respuestas de nuevo es más una prueba de integración, ya que conectar y asegurar que los puntos finales sean correctos no está realmente relacionado con probar la lógica del servicio.

ETA: Primero pruebo la lógica porque muchas veces los problemas de conexión, los problemas del cortafuegos, etc. pueden tomar tiempo para resolverse con los servicios de WCF, y reservo pruebas que duran.

0

Para ejecutar con éxito el método de prueba para el servicio web, debe eliminar el atributo [HostType("ASP.NET")] en absoluto. También UrlToTest debe contener una URL para la aplicación web solamente, no para el archivo SVC. También el método de prueba necesita AspNetDevelopmentServer solo en algunos casos específicos.

Si usted aloja SVC en IIS local, el código del método de ensayo será similar a:

[TestMethod()] 
[UrlToTest("http://localhost/ServiceApp")] 
public void ServiceTest() 
{ 
    WcfService target = new WcfService(); 
    string arg = "test"; 
    Response actual = target.DoSmth(arg); 

    Assert.IsTrue(actual != null); 
} 
Cuestiones relacionadas