Sdílet prostřednictvím


Ukázkový projekt pro vytvoření diagnostické datový adaptér

"MyDiagnosticDataAdapter" je adaptér jednoduchých diagnostických dat, který můžete připojit soubor protokolu s výsledky testu při spuštění testů.

Potřebujete oprávnění správce v počítači žádné kde shromažďování diagnostických dat nebo konfigurace je nainstalován editor.

Příklad

Tento příklad znázorňuje, jak lze provádět následující úkoly:

  • Použít atributy k zjistitelnost třídy na Microsoft Test Manager jako diagnostických dat adaptéru.

  • Použít atributy k zjistitelnost ovládací prvek třídy uživatelů na Microsoft Test Manager jako změna konfigurace adaptéru diagnostických dat použít editor.

  • Přístup k výchozí konfigurační data.

  • Registrovat určitých shromažďování diagnostických událostí.

  • Odesláním jej připojit soubor protokolu DataCollectionSink.

// My Data Collector Class
using Microsoft.VisualStudio.TestTools.Common;
using Microsoft.VisualStudio.TestTools.Execution;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System;

namespace MyCompany.MyDiagnosticDataAdapters
{
    // Provide a URI and friendly name for your diagnostic data adapter
    [DataCollectorTypeUri("datacollector://MyCompany/MyDataCollector/1.0")]
    [DataCollectorFriendlyName("Collect Log Files sample", false)]
    // Designate your chosen configuration editor
    [DataCollectorConfigurationEditor(
        "configurationeditor://MyCompany/MyDataConfigEditor/1.0")]
    public class MyDataCollector : DataCollector
    {
        private DataCollectionEvents dataEvents;
        private DataCollectionLogger dataLogger;
        private DataCollectionSink dataSink;
        private XmlElement configurationSettings;

        // Required method called by the testing framework
        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);
            dataEvents.DataRequest +=
                new EventHandler<DataRequestEventArgs>(OnDataRequest);
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                dataEvents.SessionStart -=
                    new EventHandler<SessionStartEventArgs>(OnSessionStart);
                dataEvents.SessionEnd -=
                    new EventHandler<SessionEndEventArgs>(OnSessionEnd);
                dataEvents.TestCaseStart -=
                    new EventHandler<TestCaseStartEventArgs>(OnTestCaseStart);
                dataEvents.TestCaseEnd -=
                    new EventHandler<TestCaseEndEventArgs>(OnTestCaseEnd);
                dataEvents.DataRequest -=
                    new EventHandler<DataRequestEventArgs>(OnDataRequest);
            }
        }

        #region Event Handlers
        public void OnSessionStart(object sender, SessionStartEventArgs e)
        {
            // TODO: Provide implementation
        }

        public void OnSessionEnd(object sender, SessionEndEventArgs e)
        {
            // TODO: Provide implementation
        }

        public void OnTestCaseStart(object sender, TestCaseEventArgs e)
        {
            // TODO: Provide implementation
        }

        public void OnTestCaseEnd(object 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);
            }
        }

        public void OnDataRequest(object sender, DataRequestEventArgs e)
        {
            // TODO: Provide implementation
            // Most likely this occurs because a bug is being filed
        }
        #endregion

        // A private method to collect the configured file names
        private List<string> getFilesToCollect()
        {
            // Seetup 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;
        }
    }
}

Toto je konfigurační editor vzorku diagnostických dat adaptéru.Přidejte uživatele řízení projektu a vytvořit velmi jednoduchý formulář, který obsahuje popisek ("název souboru protokolu:") a textové pole s názvem "FileTextBox".

using Microsoft.VisualStudio.TestTools.Common;
using Microsoft.VisualStudio.TestTools.Execution;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System;

namespace MyCompany.DiagnosticDataAdapters.ConfigurationEditors
{
    [DataCollectorConfigurationEditorTypeUri(
        "configurationeditor://MyCompany/MyConfigEditor/1.0")]
    public partial class MyDataConfigEditor :
        UserControl, IDataCollectorConfigurationEditor
    {
        private DataCollectorSettings collectorSettings;

        // Create a private property for the service provider
        private IServiceProvider ServiceProvider { get; set; }

        // Constructor
        public MyConfigurationEditor()
        {
            InitializeComponent();
        }

        // Required method called by the testing framework
        public void Initialize(
            IServiceProvider svcProvider,
            DataCollectorSettings settings)
        {
            ServiceProvider = svcProvider;
            collectorSettings = settings;

            // Display the file name as listed in the settings file.
            // If the configuration has not been updated before, this
            // data will be provided by the default configuration
            // section from <nameofcollector>.dll.config:
            // <DefaultConfiguration>
            //   <MyCollectorName 
            //       xmlns="http://MyCompany/schemas/ProductName/Version");
            //     <File FullPath="C:\temp\logfile1.txt" />
            //   </MyCollectorName>
            // </DefaultConfiguration>
            this.SuspendLayout();
            this.FileTextBox.Text = GetText(collectorSettings.Configuration);
            this.ResumeLayout();
        }

        // Can be used to verify data before saving it
        public bool VerifyData()
        {
            // Not currently verifying data
            return true;
        }

        // Reset to default value from XML configuration
        // using a custom method
        public void ResetToAgentDefaults()
        {
            this.FileTextBox.Text = 
                getText(collectorSettings.DefaultConfiguration);
        }

        // Saves data changed in the editor to the test configuration
        // settings. Does not change the default value.
        public DataCollectorSettings SaveData()
        {
            collectorSettings.Configuration.InnerXml =
                String.Format(
                    @"<MyCollectorName
      http://MyCompany/schemas/MyDataCollector/1.0"">
  <File FullPath=""{0}"" />
</MyCollectorName>",
                    FileTextBox.Text);
            return collectorSettings;
        }

        // Reads the configuration settings
        private string getText(XmlElement element)
        {
            // Setup namespace manager with our namespace
            XmlNamespaceManager nsmgr =
                new XmlNamespaceManager(
                    element.OwnerDocument.NameTable);

            // Find all the "File" elements under our configuration
            XmlNodeList files = element.SelectNodes("//ns:MyDataCollector/ns:File", nsmgr);
            
            string result = String.Empty;
            if (files.Count > 0)
            {
                XmlAttribute pathAttribute = files[0].Attributes["FullPath"];
                if (pathAttribute != null &&
                    !String.IsNullOrEmpty(pathAttribute.Value))
                {
                    result = pathAttribute.Value;
                }
            }

            return result;
        }
    }
}

Následuje ukázkový konfigurační soubor diagnostických dat editoru konfigurace kolekcí.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section 
      name="DataCollectorConfiguration"
      type="Microsoft.VisualStudio.QualityTools.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">
    <DataCollector 
        typeUri="datacollector://MyCompany/MyDataCollector/1.0">
      <DefaultConfiguraton>
        <!-- Your default config settings-->
        <File FullPath="c:\temp\logfile1.txt" />
      </DefaultConfiguration>
    </DataCollector>
  </DataCollectorConfiguration>
</configuration>

Probíhá kompilace kódu

Vytvořit kód projektu pro tento diagnostický adaptér

  1. Vytvoření nového projektu knihovny třídy s názvem "MyDataCollector".

  2. V Aplikaci Solution Explorer, klepněte pravým tlačítkem myši projekt a pak zvolte Vlastnosti.Chcete-li vybrat složku přidat, zvolte Odkaz cesty a pak zvolte se třemi tečkami ().

    Cestu vyberte odkaz zobrazí dialogové okno.

  3. Vyberte následující cestu, založený na instalační adresář: Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies.Klepněte na tlačítko OK.

  4. Chcete-li cestu k odkazu přidat do složky, zvolte Přidat složku.

    Složky se zobrazí v seznamu odkaz cesty.

  5. Zvolte Uložit všechny ikonu Uložit odkaz cesty.

  6. Přidání sestavení Microsoft.VisualStudio.QualityTools.ExecutionCommon.

    1. V Aplikaci Solution Explorer, klepněte pravým tlačítkem na odkazy a pak zvolte Přidat odkaz na.

    2. Zvolte procházení a vyhledejte Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

      Toto sestavení bude nalezen v Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies.

    3. Klepněte na tlačítko OK.

  7. Přidání sestavení Microsoft.VisualStudio.QualityTools.Common.

    1. V aplikaci Solution Explorer klepněte pravým tlačítkem na odkazy a vyberte Přidat odkaz na.

    2. Zvolte procházení a vyhledejte Microsoft.VisualStudio.QualityTools.Common.dll.

      Toto sestavení bude nalezen v Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies.

    3. Klepněte na tlačítko OK.

  8. Kopírovat Třída adaptéru diagnostických dat, která byla uvedena v tomto dokumentu do třídy pro knihovnu tříd.Uložte tuto třídu.

  9. Chcete-li přidat uživatele řízení projektu, klepněte pravým tlačítkem myši MyDataCollector projektu v aplikaci Solution Explorer přejděte na Přidata pak zvolte Uživatelský ovládací prvek.Zvolte Přidat.

  10. Pomocí panelu Přidat uživatelský ovládací prvek popisek a název souboru změnit vlastnost Text:.

  11. Pomocí panelu Přidat uživatelský ovládací prvek textové pole a změňte název na textBoxFileName.

  12. V Aplikaci Solution Explorer, klepněte pravým tlačítkem na ovládací prvek uživatele a pak zvolte zobrazení kód. Třída uživatele řízení uvedený v tomto dokumentu nahraďte tento ovládací prvek třídy uživatelů.Uložte tuto třídu.

    [!POZNÁMKA]

    Ve výchozím nastavení nazývá uživatelský ovládací prvek UserControl1.Ujistěte se, že používá řídicí kód třídy uživatele název uživatelského ovládacího prvku.

  13. Vytvořit konfigurační soubor v Aplikaci Solution Explorer roztok tlačítkem, přejděte na Přidata pak zvolte Nové položky.Vybrat Konfiguračního souboru aplikacea pak zvolte Přidat.Přidat tento soubor s názvem App.config k řešení.

  14. Zkopírujte soubor XML ze vzorku, které bylo dříve do souboru XML.Uložte soubor.

  15. Řešení a zkopírujte vestavěné sestavení a App.config do souboru Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\DataCollectors adresáře.

  16. Vytvořte nastavení test používá tento adaptér diagnostické vlastní data.Test nastavení shromáždit soubor existuje.

    Pokud používáte testy z Microsoft Test Manager, můžete přiřadit tyto zkušební test nastavení plánu před spustit testy nebo spustit pomocí příkazu Možnosti test nastavení přidělení a přepsání nastavení.Další informace o nastavení testu viz Nastavení stroje a shromažďování diagnostických informací pomocí nastavení testu.

  17. Test nastavení pomocí diagnostických dat vybraný adaptér spustíte testy.

    Výsledky testování přikládán při zkoušce datový soubor, který jste určili.

Viz také

Koncepty

Jak: Vytvoření diagnostické datový adaptér

Jak: vytvoření Editor vlastních dat adaptéru diagnostických dat

Jak: Nainstalujte adaptér vlastní diagnostických dat

Vytvoření diagnostické datový adaptér shromažďovat Data vlastní nebo ovlivnit zkušební stroj