2008-08-29 20 views
5

Tengo una aplicación que envía mensajes a un servicio web externo. Construyo y despliego esta aplicación usando MSBuild y Cruisecontrol.NET. A medida que CCNET crea y despliega la aplicación, también ejecuta un conjunto de pruebas usando NUnit. Ahora me gustaría probar la comunicación del servicio web también.Prueba de automatización de la comunicación del servicio web

Mi idea es que, como parte del proceso de compilación, se genere un servicio web (basado en los servicios web externos WSDL) y se despliegue en el servidor web local de los servidores de compilación. Todo lo que el servicio web debe hacer es recibir el mensaje y colocarlo en el sistema de archivos para que luego pueda verificarlo usando NUnit ordinario, por ejemplo. Esto también facilitaría el desarrollo ya que los nuevos desarrolladores solo tendrían que ejecutar el script de compilación y estar en funcionamiento (no tener que perder tiempo para establecer una conexión con el servicio de terceros).

¿Hay utilidades existentes por ahí que fácilmente se burlan de un servicio web basado en un WSDL? Alguien hizo algo similar con MSBuild?

¿Hay otras formas de probar este escenario?

Respuesta

3

Acabo de empezar a buscar en http://www.soapui.org/ y parece que funcionará muy bien para probar los servicios web.

Además, tal vez tenga en cuenta agregar una capa de abstracción en su servicio web, cada llamada de servicio llamaría directamente a un método comprobable (fuera del alcance web)? Acabo de hacer esto con un proyecto más grande en el que estoy trabajando, y su capacidad de prueba funciona bien.

+0

He utilizado soapui para pruebas funcionales y de rendimiento de nuestros servicios web, y funciona muy bien :) –

1

En general, una muy buena manera de probar cosas como esta es usar mock objects.

En el trabajo, utilizamos el producto TypeMock para probar cosas como la comunicación del servicio web y otras dependencias externas. Cuesta dinero, por lo que puede no ser adecuado para sus necesidades, pero creo que es un producto fantástico. Puedo decirte por experiencia personal que se integra muy bien con NUnit y CCNet.

Tiene una sintaxis muy simple en la que básicamente dice "cuando se llama a este método/propiedad, quiero que en su lugar devuelva este valor". Es ideal para probar cosas como fallas de red, archivos que no están presentes y, por supuesto, servicios web.

1

Eche un vistazo a NMock2. Es un producto de burla de fuente abierta y le permite crear implementaciones "virtuales" para interfaces que admiten una interacción rica y profunda.

Por ejemplo, si su interfaz de WS se llama IService y tiene un método Data GetData(), puede crear una maqueta que requiere el método a ser llamado una vez y devuelve una nueva Data objeto:

var testService = mockery.NewMock<IService>(); 
Expect 
    .Once 
    .On(testService) 
    .Method("GetService") 
    .WithNoArguments() 
    .Will(
     Return.Value(new Data()); 

A finales de la prueba, llame al mockery.VerifyAllExpectationsHaveBeenMet() para asegurarse de que realmente se llamó al método GetData.

P.S .: no confunda el proyecto "NMock2" con el "NMock RC2", que también se denomina "nmock2" en sourceforge. NMock2-the-project parece haber reemplazado a NMock.

0

En mi lugar de trabajo estamos utilizando Typemock y nUnit para nuestras pruebas unitarias.

Cuestiones relacionadas