Uso de la característica de pruebas de unidades con canalizaciones
En este tema se muestra el modo de usar la función de pruebas de unidad para agregar una prueba de unidad para la canalización al ejemplo de canalización FlatFileReceive. Las pruebas unitarias de canalización son similares a la herramienta Pipeline.exe que se documenta aquí: Herramientas de canalización. Al habilitar pruebas unitarias en la pestaña Implementación de las propiedades del proyecto, la clase de canalización del proyecto se deriva de Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline. Esta clase modela parte de la misma funcionalidad expuesta por la herramienta Pipeline.exe.
Requisitos previos
Primero debe seguir los pasos para generar la muestra FlatFileReceive y familiarizarse con dicha muestra. La documentación que incluye los pasos para compilar el ejemplo FlatFileReceive se puede encontrar aquí: FlatFileReceive (BizTalk Server Sample).
Adición de un proyecto de prueba de unidad al ejemplo FlatFileReceive
Procedimiento para agregar un proyecto de prueba de unidad al ejemplo FlatFileReceive
En Visual Studio, abra el archivo de solución FlatFileReceive.sln.
En Explorador de soluciones, haga clic con el botón derecho en el proyecto FlatFileReceive y, a continuación, haga clic en Propiedades.
En Project Designer, haga clic en la pestaña De la página de propiedades Implementación y establezca Habilitar pruebas unitarias en
True
.Cierre la página de propiedades del proyecto guardando los cambios.
En el menú principal, haga clic en Compilary, a continuación, haga clic en Recompilar solución.
En el menú principal, haga clic en Probary, a continuación, haga clic en Nueva prueba.
En el cuadro de diálogo Agregar nueva prueba , seleccione Crear un nuevo proyecto de prueba de Visual C# para el campo Agregar al proyecto de prueba . Seleccione Asistente para pruebas unitarias en la lista Plantillas y, a continuación, haga clic en Aceptar.
En el cuadro de diálogo Nuevo proyecto de prueba , deje el nombre del proyecto como TestProject1 y haga clic en Crear.
En el cuadro de diálogo Crear pruebas unitarias , expanda los tipos y seleccione el constructor FFReceivePipeline() en el nodo Microsoft.Samples.BizTalk.FlatFileReceive.FFReceivePipeline . Haga clic en OK.
Agregar código de prueba para probar la canalización
Procedimiento para agregar código de prueba para probar la canalización
Agregue las siguientes referencias al proyecto TestProject1 :
Interoperabilidad de canalizaciones de BizTalk
Microsoft.BizTalk.TestTools
Tipos de base de Microsoft XLANG/s
En el Explorador de soluciones, abra FFReceivePipelineTest.cs y agregue las siguientes directivas a la parte superior de dicho archivo:
using System.IO; using System.Collections.Specialized; using System.Collections.Generic;
Desplácese hasta la parte inferior del archivo y reemplace el método FFReceivePipelineConstructorTest por el código siguiente, que comprueba que las entradas de canalización existen antes de probar la canalización. Este código también comprueba que se genera un mensaje conforme con el esquema de archivo sin formato.
[TestMethod()] public void FFReceivePipelineUnitTest() { //=== Pipeline class derived from TestableReceivePipeline ===// FFReceivePipeline target = new FFReceivePipeline(); //=== Collection of messages to test the flat file pipeline ===// StringCollection documents = new StringCollection(); string strSourcePO_XML = @".\..\..\..\FlatFileReceive_in.txt"; Assert.IsTrue(File.Exists(strSourcePO_XML)); documents.Add(strSourcePO_XML); //=== Only a body part for this test message so an empty ===// //=== collection will be passed. ===// StringCollection parts = new StringCollection(); //=== Dictionary mapping the schema to the namespace and type ===// //=== as displayed in the properties window for the *.xsd ===// Dictionary<string, string> schemas = new Dictionary<string, string>(); string SchemaFile = @".\..\..\..\PO.xsd"; Assert.IsTrue(File.Exists(SchemaFile)); schemas.Add("Microsoft.Samples.BizTalk.FlatFileReceive.PO", SchemaFile); //=== Test the execution of the pipeline using the inputs ===// target.TestPipeline(documents, parts, schemas); //=== Validate that the pipeline test produced the message ===// //=== which conforms to the schema. ===// string[] strMessages = Directory.GetFiles(testContextInstance.TestDir + "\\out","Message*.out"); Assert.IsTrue(strMessages.Length > 0); PO PO_target = new PO(); foreach(string outFile in strMessages) { Assert.IsTrue(PO_target.ValidateInstance(outFile,Microsoft.BizTalk.TestTools.Schema.OutputInstanceType.XML)); } }
Generar y ejecutar la prueba de la unidad
Procedimiento para generar y ejecutar la prueba de unidad
En Explorador de soluciones, haga clic con el botón derecho en TestProject1 y, a continuación, haga clic en Compilar.
En el menú principal, haga clic en Probar y, a continuación, en la lista Windows , haga clic en Vista de prueba.
En la ventana Vista de prueba, haga clic con el botón derecho en FFReceivePipelineUnitTest y, a continuación, haga clic en Ejecutar selección. Compruebe que ve Superado en la ventana Resultados de la prueba.
En el directorio TestResults, examine el archivo *.out. Este archivo debe contener el nuevo mensaje procesado por la canalización. Debe estar ubicado en un directorio similar al siguiente:
C:\Archivos de programa\Microsoft BizTalk Server <versión>\SDK\Samples\Pipelines\AssemblerDisassembler\FlatFileReceive\TestResults\Wes_BTS2009Svr 2009-02-04 09_01_04\Out
El mensaje procesado debe ser similar al siguiente:
<purchaseOrder orderDate="1999-10-20" xmlns="http://FlatFileReceive.PO"> <shipTo country="US" xmlns=""> <name>Alice Smith</name> <street>123 Maple Street</street> <city>Mill Valley</city> <state>CA</state> <zip>90952</zip> </shipTo> <billTo country="US" xmlns=""> <name>Robert Smith</name> <street>8 Oak Avenue</street> <city>Old Town</city> <state>PA</state> <zip>95819</zip> </billTo> <comment>Hurry, my lawn is going wild!</comment> <items xmlns=""> <item partNum="872-AA"> <productName>Lawnmower</productName> <quantity>1</quantity> <USPrice>148.95</USPrice> <comment xmlns="http://FlatFileReceive.PO">Confirm this is electric</comment> </item> <item partNum="926-AA"> <productName>Baby Monitor</productName> <quantity>1</quantity> <USPrice>39.98</USPrice> <comment xmlns="http://FlatFileReceive.PO">Confirm this is electric</comment> <shipDate>1999-05-21</shipDate> </item> </items> </purchaseOrder>
Si alguna prueba falla, puede hacer doble clic en ella en la ventana Resultados de la prueba para ver la aserción o excepción que ha provocado el fallo de la prueba.
Resumen de códigos de prueba
Cuando se habilitaban las pruebas unitarias para el proyecto FlatFileReceive , la clase C# FFReceivePipeline asociada a FFReceivePipeline.btp se derivaba de la clase Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline . El método FFReceivePipelineUnitTest de TestProject1 usó el método TestPipeline que FFReceivePipeline heredó para probar la canalización de recepción de archivos planos. Una vez que la canalización ha procesado el mensaje, el mensaje de salida se validó contra el esquema del archivo sin formato. Los parámetros del método TestPipeline son los siguientes:
Nombre de parámetro | Descripción |
---|---|
Documentos | StringCollection que contiene los mensajes que va a procesar la canalización. |
Partes | StringCollection que contiene las partes para los mensajes. |
Esquemas | Asignación de diccionario usada para asignar cada tipo de mensaje con su correspondiente archivo de esquema *.xsd. La clave debe tener el formato Namespace.Type. El espacio de nombres y el tipo usados deben tenerse en cuenta en la ventana de propiedades del archivo *.xsd en Visual Studio. Vea la captura de pantalla siguiente. Espacio de nombres y el tipo expuestos desde la ventana de propiedades de un archivo XSD. |
Consulte también
Uso de la característica pruebas unitarias con esquemas y mapasque funcionan con pruebas unitarias (Visual Studio)