Verwenden des Komponententest-Features mit Pipelines
In diesem Thema wird demonstriert, wie Sie mithilfe des Komponententest-Features einen Komponententest für die Pipeline im FlatFileReceive-Pipelinebeispiel hinzufügen. Pipelinekomponententests ähneln dem hier dokumentierten Pipeline.exe-Tool: Pipelinetools. Wenn Sie Komponententests auf der Registerkarte Bereitstellung der Projekteigenschaften aktivieren, wird die Pipelineklasse in Ihrem Projekt von Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline abgeleitet. Diese Klasse modelliert einige derselben Funktionalitäten, die vom Tool Pipeline.exe bereitgestellt werden.
Voraussetzungen
Sie müssen zuerst die Schritte zum Erstellen des FlatFileReceive -Beispiels befolgen und sich mit dem Beispiel vertraut machen. Die Dokumentation, die die Schritte zum Erstellen des FlatFileReceive-Beispiels enthält, finden Sie hier: FlatFileReceive (BizTalk Server Beispiel).
Hinzufügen eines Komponententestprojekts zum FlatFileReceive-Beispiel
So fügen Sie ein Komponententestprojekt zum FlatFileReceive-Beispiel hinzu
Öffnen Sie in Visual Studio die Projektmappendatei FlatFileReceive.sln.
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt FlatFileReceive, und klicken Sie dann auf Eigenschaften.
Klicken Sie in Project Designer auf die Eigenschaftenseite Bereitstellung, und legen Sie Komponententests aktivieren auf fest
True
.Schließen Sie die Projekteigenschaftenseite, und speichern Sie dabei die Änderungen.
Klicken Sie im menü Standard auf Erstellen, und klicken Sie dann auf Projektmappe neu erstellen.
Klicken Sie im Menü Standard auf Test und dann auf Neuer Test.
Wählen Sie im Dialogfeld Neuen Test hinzufügen die Option Neues Visual C#-Testprojekt erstellen für das Feld Zu Testprojekt hinzufügen aus. Wählen Sie komponententest-Assistent in der Liste Vorlagen aus, und klicken Sie dann auf OK.
Behalten Sie im Dialogfeld Neues Testprojekt den Projektnamen TestProject1 bei, und klicken Sie auf Erstellen.
Erweitern Sie im Dialogfeld Komponententests erstellen die Typen, und wählen Sie den FFReceivePipeline() -Konstruktor unter dem Knoten Microsoft.Samples.BizTalk.FlatFileReceive.FFReceivePipeline aus. Klicken Sie auf OK.
Hinzufügen von Testcode zum Testen der Pipeline
So fügen Sie Testcode zum Testen der Pipeline hinzu
Fügen Sie die folgenden Verweise auf das Projekt TestProject1 hinzu:
BizTalk Pipeline-Interop
Microsoft.BizTalk.TestTools
Microsoft XLANG/s-Basistypen
Öffnen Sie im Projektmappen-Explorer FFReceivePipelineTest.cs, und fügen Sie die folgenden Direktiven am Anfang der Datei hinzu:
using System.IO; using System.Collections.Specialized; using System.Collections.Generic;
Scrollen Sie zum Ende der Datei, und ersetzen Sie die FFReceivePipelineConstructorTest-Methode durch den folgenden Code, der überprüft, ob die Pipelineeingaben vorhanden sind, bevor Sie die Pipeline testen. Dieser Code überprüft außerdem, ob eine Nachricht erzeugt wird, die das Flatfile-Schema einhält.
[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)); } }
Erstellen und Ausführen des Komponententests
So erstellen Sie den Komponententest und führen ihn aus
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf TestProjekt1, und klicken Sie dann auf Erstellen.
Klicken Sie im Menü Standard auf Test, und klicken Sie dann in der Liste Windows auf Testansicht.
Klicken Sie im Fenster Testansicht mit der rechten Maustaste auf FFReceivePipelineUnitTest, und klicken Sie dann auf Auswahl ausführen. Vergewissern Sie sich, dass im Fenster Testergebnisse "Bestanden " angezeigt wird.
Untersuchen Sie im Verzeichnis TestResults die OUT-Datei. Diese Datei sollte die neue Nachricht, die von der Pipeline verarbeitet wurde, enthalten. Sie sollte sich in einem dem Verzeichnis ähnlichen dem folgenden befinden:
C:\Programme\Microsoft BizTalk Server <version>\SDK\Samples\Pipelines\AssemblerDisassembler\FlatFileReceive\TestResults\Wes_BTS2009Svr 2009-02-04 09_01_04\Out
Die verarbeitete Nachricht sollte dem Folgenden ähnlich aussehen:
<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>
Wenn einer der Tests fehlschlägt, können Sie im Fenster Testergebnisse auf den Test doppelklicken, um den Assert-Fehler oder die Ausnahme anzuzeigen, von dem/der der Testfehler verursacht wurde.
Testcodezusammenfassung
Als komponententests für das FlatFileReceive-Projekt aktiviert wurden, wurde die FFReceivePipeline-C #-Klasse, die FFReceivePipeline.btp zugeordnet ist, von der Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline-Klasse abgeleitet. Die FFReceivePipelineUnitTest-Methode in TestProject1 verwendete die TestPipeline-Methode , die FFReceivePipeline geerbt hat, um die Flatfile-Empfangspipeline zu testen. Nachdem die Pipeline die Nachricht verarbeitet hat, wird die Ausgabenachricht anhand des Flatfile-Schemas überprüft. Die Parameter für die TestPipeline-Methode sind wie folgt:
Parametername | BESCHREIBUNG |
---|---|
Dokumente | StringCollection, die Nachrichten enthält, die von der Pipeline verarbeitet werden sollen. |
Bestandteile | StringCollection, die die Teile für die Nachricht enthält. |
Schemas | Wörterbuchzuordnung, die verwendet wird, um jeden Nachrichtentyp seiner entsprechenden XSD-Schemadatei zuzuordnen. Der Schlüssel muss das Format Namespace.Type aufweisen. Der verwendete Namespace und der verwendete Typ sollten im Eigenschaftenfenster für die Datei *.xsd in Visual Studio notiert werden. Sehen Sie sich hierzu folgenden Screenshot an. Der im Eigenschaftenfenster einer XSD-Datei enthaltene Namespace und Typ. |
Weitere Informationen
Verwenden des Komponententestfeatures mit Schemas und Zuordnungenbeim Arbeiten mit Komponententests (Visual Studio)