Compartilhar via


Como: criar um adaptador de dados de diagnóstico

Para criar um adaptador de dados diagnóstico, você cria uma biblioteca de classes usando o Visual Studio, e então adiciona as APIs diagnóstico do adaptador de dados fornecidos pelo prêmio do Visual Studio para sua biblioteca de classes.Enviar quaisquer informações que você desejar como um fluxo ou um arquivo a DataCollectionSink fornecidas pela estrutura, ao manipular eventos que são gerados durante o ensaio.Fluxos ou arquivos enviados a DataCollectionSink são armazenados como arquivos anexos para os resultados do teste quando seu teste completa.Se você criar um bug de esses resultados de teste ou quando você usa Test Runner, os arquivos estão associados ao erro.

Você pode criar um adaptador de dados diagnóstico que afeta o computador onde seus testes são executados, ou um computador que é parte do ambiente que você está usando para executar o aplicativo do teste.Por exemplo, coletando arquivos em seu computador de teste onde teste são executados, ou coletando arquivos no computador que serve na função de servidor Web para seu aplicativo.

Você pode dar ao adaptador de dados diagnóstico um nome amigável que exibe quando você cria suas configurações de teste usando Test Manager ou usando Visual Studio.As configurações de teste permite que você defina que tornam ao executar a função adaptadores de dados diagnóstico específicos em seu ambiente quando você executa os testes.Você também pode configurar os adaptadores de dados diagnóstico quando você cria suas configurações de teste.Por exemplo, você pode criar um adaptador de dados diagnóstico que coleta logs personalizados do servidor Web.Quando você cria suas configurações de teste, você pode selecionar para executar este adaptador de dados diagnóstico no computador ou computadores que estão executando esta função servidor Web e você pode alterar a configuração para que suas configurações de teste coleta somente os logs os três últimas que foram criados.Para obter mais informações sobre configurações de teste, consulte Configuração de máquinas e coletar informações de diagnóstico usando as configurações de teste.

Os eventos são gerados quando você executar seus testes de modo que o adaptador de dados diagnóstico possa executar tarefas em esse ponto no teste.

Observação importanteImportante

Esses eventos podem ser gerados em threads diferentes, especialmente quando você tem testes que é executado em vários computadores.Portanto, você deve estar ciente de possíveis problemas de segmentação e não inadvertidamente danificar dados internos do adaptador personalizado.Certifique-se que o adaptador de dados diagnóstico tem segurança de segmentos.

A seguir está uma lista parcial de eventos chave que você pode usar quando você cria o adaptador de dados diagnóstico.Para obter uma lista completa de eventos diagnóstico do adaptador de dados, consulte a classe abstrata de DataCollectionEvents .

Evento

Descrição

SessionStart

Início do seu ensaio

SessionEnd

Final do seu ensaio

TestCaseStart

Início de cada teste em ensaio

TestCaseEnd

O final de cada teste em ensaio

TestStepStart

Início de cada etapa de teste em um teste

TestStepEnd

O final de cada etapa de teste em um teste

ObservaçãoObservação

Quando um teste manual terminar, não mais evento da coleção de dados é enviado ao adaptador de dados diagnóstico.Quando um teste é executado novamente, terá um novo identificador de situação de teste.Se um usuário redefina um teste durante um teste (que gera o evento de TestCaseReset ), ou alterar um resultado da etapa de teste, nenhum evento da coleção de dados é enviado ao adaptador de dados diagnóstico, mas o identificador da situação de teste permanece o mesmo.Para determinar se uma situação de teste foi redefinido, você deve controlar o identificador da situação de teste em seu adaptador de dados diagnóstico.

Use o seguinte procedimento para criar o adaptador de dados diagnóstico que coleta um arquivo de dados que é baseado nas informações que você configura quando você cria suas configurações de teste.

Para um projeto diagnóstico do adaptador de dados de exemplo completo, incluindo um editor personalizado de configuração, consulte Projeto de amostra para a criação de um adaptador de dados de diagnóstico.

Criando e instalando um adaptador de dados diagnóstico

Para criar e instalar um adaptador de dados diagnóstico

  1. Crie uma nova biblioteca de classes.

    1. Em o menu de Arquivo , escolha Novo, aponte para e em seguida Novo Projeto.

    2. De tipos de projeto, selecione a linguagem para usar.

    3. De Modelos instalados do Visual Studio, Biblioteca de Classesselecione.

    4. Digite um nome para o adaptador de dados diagnóstico.

    5. Escolha OK.

  2. Adicione o assembly Microsoft.VisualStudio.QualityTools.ExecutionCommon.

    1. Em o solution Explorer, clique com o botão direito do mouse Referências e escolha o comando de Adicionar Referência .

    2. Escolha .NET e localize Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

    3. Escolha OK.

  3. Adicione o assembly Microsoft.VisualStudio.QualityTools.Common.

    1. Em o solution Explorer, clique com o botão direito do mouse Referências e selecione o comando de Adicionar Referência .

    2. Escolha /.NET, localize Microsoft.VisualStudio.QualityTools.Common.dll.

    3. Escolha OK.

  4. Adicione as seguintes declarações de using ao seu arquivo classe:

    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System;
    
  5. Adicione DataCollectorTypeUriAttribute a classe para que o adaptador de dados diagnóstico identifique-o como um adaptador de dados diagnóstico, substituindo Empresa, Produto, e Versão com as informações apropriadas para o adaptador de dados diagnóstico:

    [DataCollectorTypeUri("datacollector://Company/Product/Version")]
    
  6. Adicione o atributo de DataCollectorFriendlyNameAttribute a classe, substituindo os parâmetros com as informações apropriadas para o adaptador de dados diagnóstico:

    [DataCollectorFriendlyName("Collect Log Files", false)]
    

    Este nome amigável é exibido na atividade de configurações de teste.

    ObservaçãoObservação

    Você também pode adicionar DataCollectorConfigurationEditorAttribute para especificar Type do editor de configuração personalizada para este adaptador de dados, e opcionalmente para especificar o arquivo de ajuda para usar o editor.

    Você também pode aplicar DataCollectorEnabledByDefaultAttribute para especificar que sempre deve ser ativado.

  7. Sua classe diagnóstico do adaptador de dados deve herdar da classe de DataCollector como segue:

    public class MyDiagnosticDataAdapter : DataCollector
    
  8. Adicione as variáveis locais como segue:

    private DataCollectionEvents dataEvents;
    private DataCollectionLogger dataLogger;
    private DataCollectionSink dataSink;
    private XmlElement configurationSettings;
    
  9. Adicione o método de Initialize e um método de Dispose .Em o método de Initialize , você inicializa o colector de dados, todos os dados de configuração de configurações de teste, e registra manipuladores de eventos que você deseja usar como segue:

    public override void Initialize(
        XmlElement configurationElement, 
        DataCollectionEvents events, 
        DataCollectionSink sink, 
        DataCollectionLogger logger, 
        DataCollectionEnvironmentContext environmentContext)
    {
           dataEvents = events;  // The test events
           dataLogger = logger;  // The error and warning log
           dataSink = sink;      // Saves collected data
           // Configuration from the test settings
           configurationSettings = configurationElement;
    
           // Register common events for the data collector
           // Not all of the events are used in this class
        dataEvents.SessionStart += 
            new EventHandler<SessionStartEventArgs>(OnSessionStart);
        dataEvents.SessionEnd += 
            new EventHandler<SessionEndEventArgs>(OnSessionEnd);
        dataEvents.TestCaseStart += 
            new EventHandler<TestCaseStartEventArgs>(OnTestCaseStart);
        dataEvents.TestCaseEnd += 
            new EventHandler<TestCaseEndEventArgs>(OnTestCaseEnd);
    }
    
    public override void Dispose(bool disposing)
    {
        if (disposing)
        {
            // Unregister the registered events
            dataEvents.SessionStart -= 
                new EventHandler<SessionStartEventArgs>(OnSessionStart);
            dataEvents.SessionEnd -= 
                new EventHandler<SessionEndEventArgs>(OnSessionEnd);
            dataEvents.TestCaseStart -= 
                new EventHandler<TestCaseStartEventArgs>(OnTestCaseStart);
            dataEvents.TestCaseEnd -= 
                new EventHandler<TestCaseEndEventArgs>(OnTestCaseEnd);
        }
    }
    
  10. Use o seguinte código manipulador de eventos e o método particular para coletar o arquivo de log gerado durante o teste:

    public void OnTestCaseEnd(sender, TestCaseEndEventArgs e)
    {
        // Get any files to be collected that are
        // configured in your test settings
        List<string> files = getFilesToCollect();
    
        // For each of the files, send the file to the data sink
        // which will attach it to the test results or to a bug
        foreach (string file in files)
        {
            dataSink.SendFileAsync(e.Context, file, false);
        }
    }
    
    // A private method that returns the file names
    private List<string> getFilesToCollect()
    {
        // Get a namespace manager with our namespace
        XmlNamespaceManager nsmgr =
            new XmlNamespaceManager(
                configurationSettings.OwnerDocument.NameTable);
        nsmgr.AddNamespace("ns", 
            "http://MyCompany/schemas/MyDataCollector/1.0");
    
        // Find all of the "File" elements under our configuration
        XmlNodeList files =
            configurationSettings.SelectNodes(
                "//ns:MyDataCollector/ns:File");
    
        // Build the list of files to collect from the 
        // "FullPath" attributes of the "File" nodes.
        List<string> result = new List<string>();
        foreach (XmlNode fileNode in files)
        {
            XmlAttribute pathAttribute = 
                fileNode.Attributes["FullPath"];
            if (pathAttribute != null &&
                !String.IsNullOrEmpty(pathAttribute.Value))
            {
                result.Add(pathAttribute.Value);
            }
        }
    
        return result;
    }
    

    Esses arquivos estão conectados aos resultados de teste.Se você criar um bug de esses resultados de teste ou quando você usa Test Runner, os arquivos são anexados ao erro.

    Se você desejar usar seu próprio editor para coletar dados para usar nas configurações de teste, consulte Como: criar um Editor personalizado para os dados para o seu adaptador de dados de diagnóstico.

  11. Para coletar um arquivo de log quando um teste concluir baseado em que o usuário configurado nas configurações de teste, você deve criar um arquivo de App.config e o adicionar à solução.Este arquivo tem o seguinte formato e deve conter o URI para que o adaptador de dados diagnóstico identifique-o.Substitua os valores reais da empresa “/ProductName/versão”.

    ObservaçãoObservação

    Se você não precisará configurar quaisquer informações para o adaptador de dados diagnóstico, então você não precisará criar um arquivo de configuração.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="DataCollectorConfiguration" 
          type="Microsoft.VisualStudio.TestTools.Execution.DataCollectorConfigurationSection, 
          Microsoft.VisualStudio.QualityTools.ExecutionCommon, 
          Version=4.0.0.0, Culture=neutral, 
          PublicKeyToken=b03f5f7f11d50a3a" />
      </configSections>
      <DataCollectorConfiguration 
        xmlns="https://microsoft.com/schemas/VisualStudio/TeamTest/11">
        <DefaultConfiguration>
          <!-- Your default config settings -->
            <File FullPath="C:\temp\logfile1.txt"/>
            <File FullPath="C:\temp\logfile2.txt"/>
        </DefaultConfiguration>
      </DataCollectorConfiguration>
    </configuration> 
    
    ObservaçãoObservação

    O elemento de configuração padrão pode conter todos os dados que você precisar.Se o usuário não configurar o adaptador de dados diagnóstico nas configurações de teste, os dados estarão padrão passados para o adaptador de dados diagnóstico quando são executados.Como o XML você adiciona à seção <DefaultConfigurations> não é provável de ser parte do esquema declarado, você pode ignorar os erros que XML gerar.

    Existem outros exemplos dos arquivos de configuração no seguinte caminho baseado no diretório de instalação: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors.

    Para obter mais informações sobre como configurar suas configurações de teste para usar um ambiente quando você executar seus testes, consulte Especificando as configurações de teste no Microsoft Test Manager ou Criar configurações de teste para testes de sistema automatizados usando o Microsoft Test Manager.

    Para obter mais informações sobre como instalar o arquivo de configuração, consulte Como: instalar um adaptador de dados de diagnóstico personalizado

  12. Construa sua solução para criar o assembly diagnóstico do adaptador de dados.

  13. Para obter informações sobre como instalar o editor personalizado, consulte Como: instalar um adaptador de dados de diagnóstico personalizado.

  14. Para obter mais informações sobre como configurar suas configurações de teste para usar um ambiente quando você executar seus testes, consulte Especificando as configurações de teste no Microsoft Test Manager ou Criar configurações de teste para testes de sistema automatizados usando o Microsoft Test Manager.

  15. Selecione o adaptador de dados diagnóstico, primeiro você deve selecionar as configurações existentes de um teste ou criar um novo de Microsoft Test Manager ou Visual Studio.O adaptador é exibido na guia de dados e diagnósticos das configurações de teste com o nome amigável que você atribuiu à classe.

  16. Se você estiver executando seu teste de Microsoft Test Manager, você pode atribuir essas configurações de teste para o plano de teste antes de executar seus testes, ou use o comando de execução com opções atribuir configurações de teste e configurações de teste de substituição.Para obter mais informações sobre configurações de teste, consulte Configuração de máquinas e coletar informações de diagnóstico usando as configurações de teste.

    Se você estiver executando seu teste do Visual Studio, você deve definir essas configurações de teste para ser ativo.Para obter mais informações sobre configurações de teste, consulte Especificando configurações de teste do Visual Studio.

  17. Executar seus testes usando as configurações de teste com o adaptador de dados diagnóstico selecionado.

    O arquivo de dados que você especificou é anexado a seus resultados de teste.

Consulte também

Tarefas

Criar configurações de teste para testes de sistema automatizados usando o Microsoft Test Manager

Referência

DataCollectorConfigurationEditorAttribute

DataCollectionEvents

DataCollector

DataCollectionSink

DataCollectorTypeUriAttribute

DataCollectorFriendlyNameAttribute

DataCollectorEnabledByDefaultAttribute

Conceitos

Configuração de máquinas e coletar informações de diagnóstico usando as configurações de teste

Como: criar um Editor personalizado para os dados para o seu adaptador de dados de diagnóstico

Outros recursos

Especificando configurações de teste do Visual Studio

Especificando as configurações de teste no Microsoft Test Manager