Definieren von Tests mithilfe einer XML-Konfigurationsdatei
BizUnit bietet zwei Möglichkeiten zum Definieren von Tests: über eine XML-Konfigurationsdatei und über ein Excel-Arbeitsblatt. Dieses Thema konzentriert sich auf die Verwendung einer XML-Konfigurationsdatei zum Definieren von Tests. Sie sollten sich jedoch auch das BizUnit SDK ansehen, da es ein interessantes Beispiel zum Definieren von BizUnit-Testfällen mithilfe von Excel bietet. Darüber hinaus können Sie das BizUnit-Designer-Tool untersuchen, das eine benutzeroberfläche bietet, die eine schnelle Erstellung von BizUnit-Testfällen ermöglicht. Dieses Thema bietet eine Übersicht darüber, wie Testfälle mithilfe der XML-Konfiguration mithilfe eines sehr vereinfachten Szenarios definiert werden.
Übersicht über das Definieren eines BizUnit-Testfalls mithilfe der XML-Konfiguration
Wie bereits erwähnt, wird dieses Szenario zur Veranschaulichung vereinfacht. Betrachten Sie eine Beispielmessaginganwendung wie die unten dargestellte. Angenommen, das normale Funktionsverhalten für diese Anwendung besteht darin, dass BizTalk eine XML-Datei über einen Datei-Empfangsspeicherort empfängt und sie dann basierend auf einem Abonnement an einen entsprechenden Abonnenten sendet. Um dieses Szenario effektiv zu überprüfen, ist es wichtig, dass wir die folgenden Schritte im Test ausführen:
Richten Sie die Umgebung ein, um sicherzustellen, dass sie sich in einem konsistenten Zustand befindet und bereit für die Ausführung des Tests ist:
- Dies geschieht, indem alle Dateien gelöscht werden, die an den beiden verwendeten Dateispeicherorten vorhanden sind.
Führen Sie den Test aus, um die Funktionalität zu überprüfen:
Erstellen Sie eine gültige XML-Nachricht im Ordner, den die Datei abruft.
Überprüfen Sie, ob die richtige XML-Nachricht am Speicherort des ausgehenden Ordners platziert ist.
Die Überprüfung sollte sowohl das Schema als auch die Nutzlastinformationen für die Nachricht abdecken. (In der Regel sollten einige Schlüsselfelder untersucht werden.)
Bereinigen Sie die Umgebung, um sicherzustellen, dass sich die Umgebung im gleichen Zustand wie vor der Testausführung befindet:
- Löschen Sie alle Dateien, die an den beiden verwendeten Dateispeicherorten vorhanden sind.
BizTalk Messaging-BeispielanwendungJeder Testfall beginnt und endet mit dem XML-Tag TestCase; der testName-Parameter wird an diese übergeben, wie hier angegeben.
<TestCase testName="Test_01_FILECopyWithXmlValidation">
Anschließend treten wir in die TestSetup-Phase ein, in der wir sicherstellen, dass sich die Umgebung in einem konsistenten Zustand befindet, um den Test auszuführen. In diesem Beispiel löschen wir alle XML-Nachrichten, die in unserem Verzeichnis TestData enthalten sind. Dies geschieht mithilfe des FileDeleteMultipleStep.
<TestSetup>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">
<Directory>..\..\..\TestData\</Directory>
<SearchPattern>*.xml</SearchPattern>
</TestStep>
</TestSetup>
Anschließend geben wir den kritischsten Abschnitt des Tests ein, die Testausführungsphase. Diese Phase kann mehrere Testschritte enthalten. In diesem Beispiel verwenden wir fileCreateStep, um ein Dokument (InDoc1.xml das <im SourcePath-Tag> zu sehen ist) in eine Dateiablage zu kopieren, die von unserem Empfangsspeicherort verwendet wird. Es ist wichtig zu beachten, dass BizUnit die Verwendung eindeutiger Bezeichner für Dateinamen in diesem Schritt unterstützt. Dies kann mit dem Verweis %Guid% im CreationPath-Tag angezeigt werden.
Nachdem dies abgeschlossen wurde, müssen wir den FileValidateStep verwenden, um zu überprüfen, ob die ausgehende Nachricht erstellt wurde. Mit diesem Schritt können Sie einen Timeoutwert (in Millisekunden), das Verzeichnis und das Suchmuster angeben. Darüber hinaus können Sie mit dem DeleteFile-Tag angeben, ob die Datei nach der Überprüfung entfernt werden soll. Schließlich sollten Sie auch beachten, dass die Überprüfung eine XPath-Abfrage enthält, die den PONumber-Knoten innerhalb der XML-Nachricht überprüft (sie überprüft, ob der Wert PONumber_0 ist.) Die Überprüfung und Validierung der Nutzlast von ausgehenden Nachrichten ist ein weiteres Beispiel für ein Leitprinzip, das Sie bei der Verwendung von BizUnit befolgen sollten.
<TestExecution>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep">
<SourcePath>..\..\..\TestData\InDoc1.xml</SourcePath>
<CreationPath>..\..\..\Rec_03\TransactionId_%Guid%.xml</CreationPath>
</TestStep>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileValidateStep">
<Timeout>3000</Timeout>
<Directory>..\..\..\Rec_03\</Directory>
<SearchPattern>TransactionId_*.xml</SearchPattern>
<DeleteFile>true</DeleteFile>
<ValidationStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.XmlValidationStep">
<XmlSchemaPath>..\..\..\TestData\PurchaseOrder.xsd</XmlSchemaPath>
<XmlSchemaNameSpace>http://SendMail.PurchaseOrder</XmlSchemaNameSpace>
<XPathList>
<XPathValidation query="/*[local-name()='PurchaseOrder' and namespace-uri()='http://SendMail.PurchaseOrder']/*[local-name()='PONumber' and namespace-uri()='']">PONumber_0</XPathValidation>
</XPathList>
</ValidationStep>
</TestStep>
</TestExecution>
Die letzte Phase des Testfalls ist die Bereinigung. Wie sie hier sehen können, wird der Testschritt FileDelete verwendet, um die vom Test verwendeten Verzeichnisse zu sauber.
<TestCleanup>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">
<Directory>..\..\..\TestData\</Directory>
<SearchPattern>*.xml</SearchPattern>
</TestStep>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">
<Directory>..\..\..\Rec_03\</Directory>
<SearchPattern>*.xml</SearchPattern>
</TestStep>
</TestCleanup>
Dieses Beispiel veranschaulicht hoffentlich, dass die Definition von Tests in BizUnit relativ einfach ist und dass Sie mit diesem Testframework schnell Testfälle entwickeln können, um Funktionstests Ihrer Anwendung bereitzustellen.
Vollständiges Testfallbeispiel
Die vollständigen Inhalte der Testfallkonfigurationsdatei finden Sie hier als Referenz:
<TestCase testName="Test_01_FILECopyWithXmlValidation">
<TestSetup>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">
<Directory>..\..\..\TestData\</Directory>
<SearchPattern>*.xml</SearchPattern>
</TestStep>
</TestSetup>
<TestExecution>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep">
<SourcePath>..\..\..\TestData\InDoc1.xml</SourcePath>
<CreationPath>..\..\..\Rec_03\TransactionId_%Guid%.xml</CreationPath>
</TestStep>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileValidateStep">
<Timeout>3000</Timeout>
<Directory>..\..\..\Rec_03\</Directory>
<SearchPattern>TransactionId_*.xml</SearchPattern>
<DeleteFile>true</DeleteFile>
<ValidationStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.XmlValidationStep">
<XmlSchemaPath>..\..\..\TestData\PurchaseOrder.xsd</XmlSchemaPath>
<XmlSchemaNameSpace>http://SendMail.PurchaseOrder</XmlSchemaNameSpace>
<XPathList>
<XPathValidation query="/*[local-name()='PurchaseOrder' and namespace-uri()='http://SendMail.PurchaseOrder']/*[local-name()='PONumber' and namespace-uri()='']">PONumber_0</XPathValidation>
</XPathList>
</ValidationStep>
</TestStep>
</TestExecution>
<!-- Test cleanup: test cases should always leave the system in the state they found it -->
<TestCleanup>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">
<Directory>..\..\..\TestData\</Directory>
<SearchPattern>*.xml</SearchPattern>
</TestStep>
<TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">
<Directory>..\..\..\Rec_03\</Directory>
<SearchPattern>*.xml</SearchPattern>
</TestStep>
</TestCleanup>
</TestCase>