Utilisation de la fonctionnalité de test unitaire avec les pipelines
Cette rubrique décrit l'utilisation de la fonctionnalité de test unitaire en vue d'ajouter un test unitaire au pipeline dans l'exemple de pipeline FlatFileReceive. Les tests unitaires de pipeline sont similaires à l’outil Pipeline.exe décrit ici : Outils de pipeline. Lorsque vous activez les tests unitaires sous l’onglet Déploiement des propriétés du projet, la classe de pipeline dans votre projet est dérivée de Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline. Cette classe définit certaines des fonctionnalités exposées par l'outil Pipeline.exe.
Prérequis
Vous devez commencer par suivre les étapes de création de l'exemple FlatFileReceive et vous familiariser avec cet exemple. La documentation qui inclut les étapes de création de l’exemple FlatFileReceive se trouve ici : FlatFileReceive (BizTalk Server Sample).
Ajout d'un projet de test unitaire à l'exemple FlatFileReceive
Pour ajouter un projet de test unitaire à l'exemple FlatFileReceive
Dans Visual Studio, ouvrez le fichier de solution FlatFileReceive.sln.
Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet FlatFileReceive, puis cliquez sur Propriétés.
Dans Project Designer, cliquez sur l’onglet de la page de propriétés Déploiement et définissez Activer les tests unitaires sur
True
.Fermez la page des propriétés du projet en enregistrant les modifications.
Dans le menu main, cliquez sur Générer, puis sur Reconstruire la solution.
Dans le menu main, cliquez sur Test, puis sur Nouveau test.
Dans la boîte de dialogue Ajouter un nouveau test , sélectionnez Créer un projet de test Visual C# pour le champ Ajouter au projet de test . Sélectionnez Assistant Test unitaire dans la liste Modèles , puis cliquez sur OK.
Dans la boîte de dialogue Nouveau projet de test , laissez le nom du projet TestProject1 et cliquez sur Créer.
Dans la boîte de dialogue Créer des tests unitaires , développez les types et sélectionnez le constructeur FFReceivePipeline() sous le nœud Microsoft.Samples.BizTalk.FlatFileReceive.FFReceivePipeline . Cliquez sur OK.
Ajout du code de test pour tester le pipeline
Pour ajouter le code de test pour tester le pipeline
Ajoutez les références suivantes au projet TestProject1 :
Interopérabilité de pipeline BizTalk
Microsoft.BizTalk.TestTools
Types de base de Microsoft XLANG/s
Dans l'Explorateur de solutions, ouvrez FFReceivePipelineTest.cs et ajoutez les directives suivantes en haut de ce fichier :
using System.IO; using System.Collections.Specialized; using System.Collections.Generic;
Faites défiler jusqu’au bas du fichier et remplacez la méthode FFReceivePipelineConstructorTest par le code suivant, qui vérifie que les entrées de pipeline existent avant de tester le pipeline. Ce code vérifie également qu'un message conforme au schéma de fichier plat est généré.
[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)); } }
Génération et exécution du test unitaire
Pour générer et exécuter le test unitaire
Dans Explorateur de solutions, cliquez avec le bouton droit sur TestProject1, puis cliquez sur Générer.
Dans le menu main, cliquez sur Tester, puis, dans la liste Windows, cliquez sur Affichage de test.
Dans la fenêtre Affichage de test, cliquez avec le bouton droit sur FFReceivePipelineUnitTest, puis cliquez sur Exécuter la sélection. Vérifiez que vous voyez Réussite dans la fenêtre Résultats des tests.
Dans le répertoire TestResults, examinez le fichier *.out. Ce fichier doit contenir le nouveau message traité par le pipeline. Il doit se trouver dans un répertoire semblable au suivant :
C :\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Pipelines\AssembleDisassembler\FlatFileReceive\TestResults\Wes_BTS2009Svr 2009-02-04 09_01_04\Out
Le message traité doit ressembler à ce qui suit :
<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>
En cas d'échec à un test, vous pouvez double-cliquer sur le test dans la fenêtre Résultats des tests pour voir la déclaration ou l'exception à l'origine de l'échec.
Récapitulatif du code de test
Lorsque les tests unitaires ont été activés pour le projet FlatFileReceive , la classe C# FFReceivePipeline associée à FFReceivePipeline.btp était dérivée de la classe Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline . La méthode FFReceivePipelineUnitTest dans TestProject1 utilisait la méthode TestPipelinehéritée par FFReceivePipeline pour tester le pipeline de réception de fichiers plats. Une fois que le pipeline a traité le message, le message de sortie est validé par rapport au schéma de fichier plat. Les paramètres de la méthode TestPipeline sont les suivants :
Nom du paramètre | Description |
---|---|
Documents | StringCollection contenant les messages que le pipeline doit traiter. |
Éléments | StringCollection contenant les parties des messages. |
Schémas | Mappage de dictionnaire utilisé pour mapper les types de messages individuels au schéma de fichier *.xsd correspondant. La clé doit être au format Namespace.Type. L’espace de noms et le type utilisés doivent être notés dans la fenêtre propriétés du fichier *.xsd dans Visual Studio. Consultez la capture d’écran ci-dessous. Espace de noms et type exposés dans la fenêtre de propriétés d'un fichier XSD. |
Voir aussi
Utilisation de la fonctionnalité de test unitaire avec des schémas et des cartesà l’aide de tests unitaires (Visual Studio)