Condividi tramite


Utilizzo della funzionalità Testing di unità con le pipeline

In questo argomento viene illustrato come utilizzare la funzionalità di testing unità per aggiungere unit test per la pipeline nell'esempio di pipeline FlatFileReceive. Gli unit test della pipeline sono simili allo strumento di Pipeline.exe documentato qui: Strumenti pipeline. Quando si abilita l'unit test nella scheda Distribuzione delle proprietà del progetto, la classe pipeline nel progetto viene derivata da Microsoft.BizTalk.TestTools.Pipeline.TestableReceivePipeline. Tramite questa classe vengono modellate modella alcune funzionalità analoghe a quelle esposte dallo strumento Pipeline.exe.

Prerequisiti

È innanzitutto necessario attenersi alla procedura per la compilazione dell'esempio FlatFileReceive e per acquisirne familiarità. La documentazione che include i passaggi per la compilazione dell'esempio FlatFileReceive è disponibile qui: FlatFileReceive (esempio BizTalk Server).

Aggiunta di un progetto unit test all'esempio FlatFileReceive

Per aggiungere un progetto unit test all'esempio FlatFileReceive

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

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

  3. In Project Designer fare clic sulla scheda Delle proprietà Distribuzione e impostare Abilita unit test su True.

  4. Salvare le modifiche e chiudere la pagina delle proprietà del progetto.

  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 testare la pipeline

Per aggiungere codice di test per testare la pipeline

  1. Aggiungere i riferimenti seguenti al progetto TestProject1 :

    • Interoperabilità pipeline BizTalk

    • Microsoft.BizTalk.TestTools

    • Tipi di base Microsoft XLANG/s

  2. In Esplora soluzioni aprire FFReceivePipelineTest.cs e aggiungere le direttive seguenti nella parte superiore 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 del 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 di unit test

Per compilare ed eseguire 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 Windows 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 venga visualizzato Superato nella finestra Risultati test.

  4. Esaminare il file con estensione out nella directory TestResults. Questo file deve contenere il nuovo messaggio elaborato dalla pipeline. Dovrebbe trovarsi in una directory analoga 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 viene superato, è possibile fare doppio clic sul test nella finestra Risultati test per visualizzare l'asserzione o l'eccezione che ha causato l'esito negativo del test.

Riepilogo del codice di test

Quando è stato abilitato lo unit test per il progetto FlatFileReceive , la classe C# FFReceivePipeline associata a FFReceivePipeline.btp è stata 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 l'elaborazione del messaggio da parte della pipeline, il messaggio di output è stato convalidato rispetto allo schema del file flat. I parametri per il metodo TestPipeline sono i seguenti:

Nome parametro Descrizione
Documenti StringCollection contenente i messaggi devono essere elaborati dalla pipeline.
Parti StringCollection contenente le parti per i messaggi.
Schemi Mapping di dizionario utilizzato per eseguire il mapping di ogni tipo di messaggio al corrispondente file di schema con estensione xsd. La chiave deve essere nel formato Namespace.Type. Lo spazio dei nomi e il tipo usati devono essere annotati dalla finestra delle proprietà per il file *.xsd in Visual Studio. Vedere lo screenshot di seguito.

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

Spazio dei nomi e tipo esposti dalla finestra delle proprietà di un file con estensione XSD.

Vedere anche

Uso della funzionalità unit test con schemi e mappeche usano unit test (Visual Studio)