Condividi tramite


Uso della funzionalità di Unit Testing con le pipeline

Questo argomento illustra come usare la funzionalità di unit test per aggiungere uno unit test per la pipeline nell'esempio di pipeline FlatFileReceive. Gli unit test della pipeline sono simili a quelli dello strumento Pipeline.exe documentato qui: Strumenti per pipeline. Quando si abilita unit test nella scheda Distribuzione delle proprietà del progetto, la classe pipeline nel progetto deriva da Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline. Questa classe modella alcune delle stesse funzionalità esposte dallo strumento Pipeline.exe.

Prerequisiti

Prima di tutto è necessario seguire i passaggi per la compilazione dell'esempio FlatFileReceive e acquisire familiarità con tale esempio. La documentazione che include i passaggi per la compilazione dell'esempio FlatFileReceive è disponibile qui: FlatFileReceive (esempio di BizTalk Server).

Aggiunta di un progetto di test unitario all'esempio FlatFileReceive

Per aggiungere un progetto di unit test all'esempio FlatFileReceive

  1. In Visual Studio aprire il file della soluzione FlatFileReceive.sln.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto FlatFileReceive e quindi scegliere Proprietà.

  3. In Progettazione progetti fare clic sulla scheda delle proprietà Distribuzione e impostare Abilita unit test su True.

  4. Chiudere la pagina delle proprietà del progetto salvando le modifiche.

  5. Scegliere Compila dal menu principale e quindi fare clic su Ricompila soluzione.

  6. Scegliere Test dal menu principale e quindi fare clic su Nuovo test.

  7. Nella finestra di dialogo Aggiungi nuovo test selezionare Crea un nuovo progetto di test di Visual C# per il campo Aggiungi al progetto di test . Selezionare Creazione guidata unit test nell'elenco Modelli e quindi fare clic su OK.

  8. Nella finestra di dialogo Nuovo progetto di test lasciare il nome del progetto come TestProject1 e fare clic su Crea.

  9. Nella finestra di dialogo Crea unit test espandere i tipi e selezionare il costruttore FFReceivePipeline() nel nodo Microsoft.Samples.BizTalk.FlatFileReceive.FFReceivePipeline . Fare clic su OK.

Aggiunta di codice di test per verificare la pipeline

Per aggiungere codice di test per testare la pipeline

  1. Aggiungere i riferimenti seguenti al progetto TestProject1 :

    • Interoperabilità della pipeline BizTalk

    • Microsoft.BizTalk.TestTools

    • Tipi di base di Microsoft XLANG/s

  2. In Esplora Soluzioni, apri FFReceivePipelineTest.cs e aggiungi le seguenti direttive all'inizio del file:

    using System.IO;
    using System.Collections.Specialized;
    using System.Collections.Generic;
    
  3. Scorrere fino alla fine del file e sostituire il metodo FFReceivePipelineConstructorTest con il codice seguente, che verifica che gli input della pipeline esistano prima di testare la pipeline. Questo codice verifica inoltre che venga generato un messaggio conforme allo schema di file flat.

    [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));
        }
    }
    

Compilazione ed esecuzione dello unit test

Per compilare ed eseguire lo unit test

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su TestProject1 e quindi scegliere Compila.

  2. Nel menu principale fare clic su Teste quindi nell'elenco Finestre fare clic su Visualizzazione test.

  3. Nella finestra Visualizzazione test fare clic con il pulsante destro del mouse su FFReceivePipelineUnitTest e quindi scegliere Esegui selezione. Verificare che sia visualizzato Superato nella finestra Risultati test.

  4. Nella directory TestResults esaminare il file *.out. Questo file deve contenere il nuovo messaggio elaborato dalla pipeline. Deve trovarsi in una directory simile alla seguente:

    C:\Programmi\Microsoft BizTalk Server <versione>\SDK\Samples\Pipelines\AssemblerDisassembler\FlatFileReceive\TestResults\Wes_BTS2009Svr 2009-02-04 09_01_04\Out

    Il messaggio elaborato dovrebbe essere simile al seguente:

    <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>
    
  5. Se un test non riesce, è possibile fare doppio clic sul test nella finestra Risultati test per visualizzare l'asserzione o l'eccezione che ha causato l'errore di test.

Riepilogo del codice di test

Quando è stato abilitato lo unit test per il progetto FlatFileReceive , la classe C# FFReceivePipeline associata a FFReceivePipeline.btp è derivata dalla classe Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline . Il metodo FFReceivePipelineUnitTest in TestProject1 ha usato il metodo TestPipeline ereditato da FFReceivePipeline per testare la pipeline di ricezione del file flat. Dopo che la pipeline ha elaborato il messaggio, il messaggio di output è stato convalidato rispetto allo schema del file flat. I parametri per il metodo TestPipeline sono i seguenti:

Nome del parametro Descrizione
Documenti StringCollection contenente i messaggi da elaborare dalla pipeline.
Parti CollezioneDiStringhe contenente le parti per i messaggi.
Schemi Mapping del dizionario usato per eseguire il mapping di ogni tipo di messaggio al file di schema *.xsd corrispondente. La chiave deve essere nel formato Namespace.Type. Lo spazio dei nomi e il tipo usati devono essere annotati nella finestra delle proprietà per il file *.xsd in Visual Studio. Vedere la schermata seguente.

Immagine che evidenzia lo spazio dei nomi e il tipo per il file XSD selezionato.

Namespace e tipo esposti dalla finestra Proprietà di un file XSD.

Vedere anche

Uso della funzionalità di unit test con schemi e mappeLavorare con i test unitari (Visual Studio)