¿Cómo evaluar los servicios de WCF? ¿Hay herramientas de terceros disponibles?WCF Unit Test
Respuesta
Como dice aku, si está probando los métodos de servicio (es decir, el comportamiento del código), puede probar la unidad directamente y eludir la infraestructura de WCF. Por supuesto, si su código depende de las clases de contexto de WCF (como OperationContext), entonces sugiero introducir wrappers como ASP.NET MVC para HttpContext.
Para probar la conectividad, dependerá del tipo de puntos finales que haya configurado. En algunos casos, puede autoevaluar su servicio WCF dentro de la prueba unitaria (como lo haría con un Servicio WCF de Windows) y probarlo.
Sin embargo, es posible que deba activar el Servidor web de desarrollo ASP.NET o incluso IIS si desea probar el comportamiento WCF específico para esos entornos de alojamiento (es decir, SSL, métodos de autenticación). Esto se pone complicado y puede comenzar a exigir la configuración de la máquina de desarrollo de todos y los servidores de compilación, pero es factible.
¿Qué es exactamente lo que quiere probar? Conectividad o métodos de servicio?
Lo bueno de WCF es que solo puede definir interfaces (err, contratos) y probarlas como código normal. Entonces puede suponer que funcionarán a través de cualquier tipo de conexión compatible con WCF.
La conectividad se puede probar alojando su servicio directamente en UT o en el servidor web de desarrollo.
cuanto a las herramientas, que hay un montón de marcos de pruebas unitarias: NUnit, las pruebas incorporadas en Visual Studio, xUnit, etc, etc.
Puede descargar "Visual Studio 2008 and .NET Framework 3.5 Training Kit" y ".NET Framework 3.5 Enhancements Training Kit" Si recuerdo correctamente había muestras para las pruebas de unidad WCF
Si uno realmente quiere probar los servicios de WCF, es mejor ir con las pruebas de integración que realmente ejercen la conectividad entre el cliente y el servidor.
Puede usar Typemock Isolator para hacer eso. Aquí hay un par de publicaciones sobre el tema de probar el client side y el server side. Puede hacerlo sin ninguna dependencia, incluido un archivo de configuración.
Gil Zilberfeld Typemock
Si desea probar el servicio real de funcionamiento a continuación SoapUI es gratuito y tiene algunas características excelentes. La única advertencia es que solo lo he intentado con el enlace HTTP básico.
He visto SOA Test utilizado para evaluar las pruebas de rendimiento y escalabilidad de los servicios de WCF, si esto es lo que busca. No tengo información sobre el costo o la lentitud.
En nuestro caso, capturamos los mensajes de nuestra IU para realizar pruebas automatizadas.
Typemock aislador es una herramienta para las pruebas unitarias wcf services, amoung otras cosas ...
creo que el mejor enfoque es poner a prueba todas las preocupaciones por separado; conectividad de prueba, llamadas de lib cliente (proxies) y método de servicio. La burla y la inyección de dependencia es una buena forma de probar la conectividad y el comportamiento del servicio de forma independiente, pero dudo que pueda evitar las pruebas de punto final dependientes del middleware.
Puede crear un host de servicio en su prueba (autohospedado) y cargar su servicio. Una vez que configure sus puntos finales, puede conectarse utilizando los servidores proxy de su cliente. Esto debería funcionar con HTTP simple y WSHTTP. En su prueba de unidad necesita crear una referencia de servicio a su servicio. Luego puede crear un host y conectar su cliente con el host de prueba juntos. Intentaría evitar cualquier prueba con el "host de servicio WCF" alias WcfSvcHost. (Menciono esto solo porque algunas personas hacen referencia a las utilidades de Visual Studio, que funcionarán solo si solo ejecuta pruebas desde su IDE)
Si necesita verificar escenarios de autenticación exóticos o puntos finales que usan middleware especial, necesitará para crear pruebas usando el middleware. Para comprobaciones simples de cordura, etc. es suficiente el uso de alojamiento propio. Las pruebas dependientes de Middleware pueden causar problemas de implementación de prueba si está utilizando un servidor de compilación.
Por puntos finales dependientes de middleware me refiero a puntos finales que usan, por ejemplo, MOM (MSMQ, RabbitMQ, etc.) o protocolos realmente exóticos, etc. Probando los proxys de cliente con un simulacro auto-alojado y probando los extremos exóticos por separado es el camino a seguir.
Si desea utilizar la inyección de dependencia, existen unos marcos bastante sofisticados que proporcionan características de "abstracción del servicio" que le permiten inyectar servicios simulados, etc. Utilicé Spring.NET con WCF varias veces. Castle Windsor tiene instalaciones WCF también.
ejemplo de prueba auto-organizada:
ServiceHost serviceHost = null;
try
{
var baseAddress = new Uri("http://localhost:8000/TestService");
serviceHost = new ServiceHost(typeof (ServiceClass), baseAddress);
Binding binding = new WSHttpBinding();
var address = new EndpointAddress("http://localhost:8000/TestService/MyService");
var endpoint = serviceHost
.AddServiceEndpoint(typeof (IServiceContract), binding, address.Uri);
var smb = new ServiceMetadataBehavior {HttpGetEnabled = true};
serviceHost.Description.Behaviors.Add(smb);
using (var client = new ProxyClient(endpoint.Name, endpoint.Address))
{
endpoint.Name = client.Endpoint.Name;
serviceHost.Open();
// ... magic happens
}
serviceHost.Close();
}
catch (Exception ex)
{
// ... tests
}
finally
{
if (serviceHost != null)
{
((IDisposable) serviceHost).Dispose();
}
}
me gustaría señalar que las herramientas de pruebas funcionales no son las mismas que las herramientas de pruebas unitarias. Las pruebas unitarias deben consistir en dividir su prueba en un conjunto de pruebas independientes, mientras que las pruebas funcionales se refieren principalmente a probar los flujos de trabajo de principio a fin.
¿A qué espacio de nombres/referencia pertenece ProxyClient? –
- 1. Unit Test NSOperation?
- 2. wpf behavior unit test
- 3. Unit Test & Log4net
- 4. minitest, test :: unit, y rieles
- 5. Catch Exception in Unit Test
- 6. ReSharper Unit Test Runner - TestCase
- 7. NUnit vs Team System Unit Test
- 8. ASP.NET - ¿Cómo comprueba Unit Test WebControls?
- 9. Unit Test MVC con ASP.NET Dev Server
- 10. C# Unit Test framework para Visual Studio?
- 11. Cómo saltarse ciertas pruebas con Test :: Unit
- 12. Selenium Unit Test usando JUnit (Java)
- 13. WCF: Cómo deshabilitar WCF Test Client
- 14. Setup Factory Girl with Test :: Unit and Shoulda
- 15. RuntimeType en lugar de Type in C# Unit Test
- 16. ruby Test :: Unit ¿Opciones de línea de comando?
- 17. fail hudson build on single unit test failure
- 18. Fail TFS Build on Single Unit Test Failure
- 19. Qt: ¿Cómo organizar Unit Test con más de una clase?
- 20. Resharper Unit Test Runner no puede encontrar archivos de contenido
- 21. ¿Cómo deshacerse en EF4 para Unit Test TearDown?
- 22. ¿Qué alternativas existen para WCF Test Client?
- 23. ¿Cómo se puede usar Wcf Test Client sin Visual Studio?
- 24. Error de WCF Test Client: Error al invocar el servicio
- 25. ¿Debo I Unit Test Data Layer Access? ¿Es esta una buena práctica y cómo hacerlo?
- 26. ¿Cómo extender las afirmaciones de Ruby Test :: Unit para incluir assert_false?
- 27. Unit Test Explorer no aparece Pruebas de unidad asíncrona para aplicaciones metropolitanas
- 28. Cómo obtener el seguimiento de la pila de un Test :: Unit :: TestCase
- 29. Por qué se lanza 'no definido método `assert_equal' 'incluso después de que requiere 'test/unit'
- 30. ejecutar varias pruebas en una secuencia de comandos en paralelo usando Test Unit Rubí
¿Conoces un tutorial sobre cómo usar MVC3 como envoltorio para pruebas unitarias? –
[Aquí hay] (https://weblogs.asp.net/cibrax/unit-tests-for-wcf) un ejemplo concreto de burla de OperationContext. – user3613932