Share via


Gewusst wie: Erstellen eines Adapters für diagnostische Daten

Um einen Adapter für diagnostische Daten zu erstellen, müssen Sie mit Microsoft Visual Studio 2010 eine Klassenbibliothek erstellen und dann die APIs der Adapter für diagnostische Daten hinzufügen, die Microsoft Visual Studio 2010 Premium für die Klassenbibliothek bereitstellt. Senden Sie alle gewünschten Informationen als Datenstrom oder Datei an das vom Framework bereitgestellte DataCollectionSink-Objekt, wenn Sie die Ereignisse behandeln, die während des Testlaufs ausgelöst werden. Die Streams oder Dateien, die an den DataCollectionSink gesendet wurden, werden bei Beendigung des Tests als Anlagen zu den Testergebnissen gespeichert. Wenn Sie aus diesen Testergebnissen einen Fehler erstellen, oder wenn Sie Test Runner verwenden, werden die Dateien ebenfalls mit dem Fehler verknüpft.

Sie können einen Adapter für diagnostische Daten erstellen, der sich auf den Computer auswirkt, auf dem die Tests ausgeführt werden, oder einen Adapter mit Auswirkung auf einen Computer, der Teil der Umgebung ist, die für die Ausführung der getesteten Anwendung verwendet wird. Sie können beispielsweise Dateien auf dem Testcomputer, auf dem die Tests ausgeführt werden, oder Dateien auf dem Computer erfassen, der in der Webserverrolle für die Anwendung verwendet wird.

Sie können dem Adapter für diagnostische Daten einen Anzeigenamen geben, der erscheint, wenn Sie die Testeinstellungen mithilfe von Test Manager oder Microsoft Visual Studio 2010 erstellen. Mit Testeinstellungen kann definiert werden, mit welcher Computerrolle bestimmte Adapter für diagnostische Daten in der Umgebung ausgeführt werden, wenn die Tests ausgeführt werden. Sie können die Adapter für diagnostische Daten auch beim Erstellen der Testeinstellungen konfigurieren. Sie können beispielsweise einen Adapter für diagnostische Daten erstellen, der benutzerdefinierte Protokolle vom Webserver abholt. Beim Erstellen von Testeinstellungen können Sie festlegen, dass dieser Adapter für diagnostische Daten auf dem Computer oder den Computern ausgeführt wird, die die Webserverrolle ausführen, und Sie können die Konfiguration Ihrer Testeinstellungen so ändern, dass nur die letzten drei erstellten Protokolle erfasst werden. Weitere Informationen zu Testeinstellungen finden Sie unter Einrichten von Computern und Sammeln von Diagnoseinformationen mithilfe von Testeinstellungen.

Beim Ausführen der Tests werden Ereignisse ausgelöst, sodass der Adapter für diagnostische Daten Aufgaben an dieser Stelle im Test ausführen kann.

Wichtig

Diese Ereignisse werden möglicherweise in verschiedenen Threads ausgelöst, insbesondere, wenn Tests auf mehreren Computern ausgeführt werden. Daher müssen Sie sich möglicher Threadingprobleme bewusst sein und darauf achten, nicht versehentlich die internen Daten des benutzerdefinierten Adapters zu beschädigen. Stellen Sie sicher, dass der Adapter für diagnostische Daten threadsicher ist.

Nachfolgend sehen Sie eine partielle Liste mit Schlüsselereignissen, die Sie beim Erstellen des Adapters für diagnostische Daten verwenden können. Eine vollständige Liste von Ereignissen in Zusammenhang mit Adaptern für diagnostische Daten finden Sie in der abstrakten DataCollectionEvents-Klasse.

Ereignis

Beschreibung

SessionStart

Start des Testlaufs

SessionEnd

Ende des Testlaufs

TestCaseStart

Start jedes Tests im Testlauf

TestCaseEnd

Ende jedes Tests im Testlauf

TestStepStart

Start jedes Testschritts in einem Test

TestStepEnd

Ende jedes Testschritts in einem Test

Tipp

Nach Abschluss eines manuellen Tests werden keine weiteren Datensammlungsereignisse mehr an den Adapter für diagnostische Daten gesendet. Wenn ein Test erneut ausgeführt wird, erhält er einen neuen Testfallbezeichner. Wenn ein Benutzer während eines Tests einen Test zurücksetzt (wodurch das TestCaseReset-Ereignis ausgelöst wird) oder ein Testschrittergebnis geändert wird, wird kein Datensammlungsereignis an den Adapter für diagnostische Daten gesendet, doch der Testfallbezeichner bleibt identisch. Sie müssen den Testfallbezeichner im Adapter für diagnostische Daten verfolgen, um zu ermitteln, ob ein Testfall zurückgesetzt wurde.

Führen Sie die folgenden Schritte aus, um einen Adapter für diagnostische Daten zu erstellen, der eine Datendatei auf der Basis von Informationen erfasst, die Sie beim Erstellen der Testeinstellungen konfigurieren.

Informationen zu einem vollständigen Beispielprojekt für Adapter für diagnostische Daten einschließlich eines benutzerdefinierten Konfigurations-Editors finden Sie unter Beispielprojekt für das Erstellen eines Adapters für diagnostische Daten.

Erstellen und Installieren eines Adapters für diagnostische Daten

So erstellen und installieren Sie einen Adapter für diagnostische Daten

  1. Erstellen Sie eine neue Klassenbibliothek.

    1. Klicken Sie im Menü Datei auf Neu, und zeigen Sie dann auf Neues Projekt.

    2. Wählen Sie unter Projekttypen die zu verwendende Sprache aus.

    3. Wählen Sie unter Von Visual Studio installierte Vorlagen die Option Klassenbibliothek aus.

    4. Geben Sie einen Namen für den Adapter für diagnostische Daten ein.

    5. Klicken Sie auf OK.

  2. Fügen Sie die Assembly Microsoft.VisualStudio.QualityTools.ExecutionCommon hinzu.

    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie anschließend auf den Befehl Verweis hinzufügen.

    2. Klicken Sie auf .NET, und suchen Sie nach Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

    3. Klicken Sie auf OK.

  3. Fügen Sie die Assembly Microsoft.VisualStudio.QualityTools.Common hinzu.

    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und wählen Sie anschließend den Befehl Verweis hinzufügen aus.

    2. Klicken Sie auf /.NET, und suchen Sie nach Microsoft.VisualStudio.QualityTools.Common.dll.

    3. Klicken Sie auf OK.

  4. Fügen Sie der Klassendatei die folgenden using-Anweisungen hinzu:

    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System;
    
  5. Fügen Sie das DataCollectorTypeUriAttribute der Klasse für Ihren Adapter für diagnostische Daten hinzu, damit dieser als Adapter für diagnostische Daten identifiziert werden kann, und ersetzen Sie dabei Firma, Produkt und Version durch die entsprechenden Informationen für den Adapter für diagnostische Daten:

    [DataCollectorTypeUri("datacollector://Company/Product/Version")]
    
  6. Fügen Sie der Klasse das DataCollectorFriendlyNameAttribute-Attribut hinzu, und ersetzen Sie dabei die Parameter durch die entsprechenden Informationen für den Adapter für diagnostische Daten:

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

    Dieser Anzeigename wird in der Aktivität "Testeinstellungen" angezeigt.

    Tipp

    Sie können auch das DataCollectorConfigurationEditorAttribute hinzufügen, um den Type des benutzerdefinierten Konfigurations-Editors für diesen Datenadapter anzugeben und um optional die für den Editor zu verwendende Hilfedatei anzugeben.

    Sie können auch das DataCollectorEnabledByDefaultAttribute anwenden, um anzugeben, dass es immer aktiviert werden soll.

  7. Die Klasse für den Adapter für diagnostische Daten muss wie folgt von der DataCollector-Klasse erben:

    public class MyDiagnosticDataAdapter : DataCollector
    
  8. Fügen Sie die lokalen Variablen wie folgt hinzu:

    private DataCollectionEvents dataEvents;
    private DataCollectionLogger dataLogger;
    private DataCollectionSink dataSink;
    private XmlElement configurationSettings;
    
  9. Fügen Sie die Initialize-Methode und eine Dispose-Methode hinzu. In der Initialize-Methode können Sie die Datensenke, möglicherweise vorhandene Konfigurationsdaten aus Testeinstellungen und die Ereignisse und die gewünschten Ereignishandler auf folgende Weise initialisieren:

    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. Verwenden Sie den folgenden Ereignishandlercode und die folgende private Methode, um die während des Tests generierte Protokolldatei zu sammeln:

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

    Diese Dateien werden an die Testergebnisse angefügt. Wenn Sie aus diesen Testergebnissen einen Fehler erstellen oder Test Runner verwenden, werden die Dateien ebenfalls an den Fehler angefügt.

    Wenn Sie einen eigenen Editor verwenden möchten, um in den Testeinstellungen zu verwendende Daten zu erfassen, lesen Sie Gewusst wie: Erstellen eines benutzerdefinierten Editors für Daten im Adapter für diagnostische Daten.

  11. Um beim Abschluss eines Tests eine Protokolldatei auf Grundlage von Testeinstellungen des Benutzers zu sammeln, müssen Sie eine App.config-Datei erstellen und diese der Projektmappe hinzufügen. Diese Datei hat das folgende Format und muss den URI für den Adapter für diagnostische Daten enthalten, um diesen zu identifizieren. Ersetzen Sie "Unternehmen", "Produktname" und "Version" durch echte Werte.

    Tipp

    Wenn Sie keine Informationen für den Adapter für diagnostische Daten konfigurieren müssen, müssen Sie keine Konfigurationsdatei erstellen.

    <?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/2010">
        <DefaultConfiguration>
          <!-- Your default config settings -->
            <File FullPath="C:\temp\logfile1.txt"/>
            <File FullPath="C:\temp\logfile2.txt"/>
        </DefaultConfiguration>
      </DataCollectorConfiguration>
    </configuration> 
    

    Tipp

    Das Standardkonfigurationselement kann alle Daten enthalten, die Sie benötigen. Wenn der Benutzer den Adapter für diagnostische Daten nicht in Testeinstellungen konfiguriert, werden die Standarddaten bei der Ausführung an den Adapter für diagnostische Daten übergeben. Da der XML-Code, den Sie im <DefaultConfigurations>-Abschnitt hinzufügen, wahrscheinlich nicht Teil des deklarierten Schemas ist, können Sie alle dadurch generierten XML-Fehler ignorieren.

    Weitere Beispiele für Konfigurationsdateien finden Sie abhängig vom Installationsverzeichnis im folgenden Pfad: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors.

    Weitere Informationen zum Konfigurieren der Testeinstellungen auf eine Umgebung beim Ausführen von Tests finden Sie unter Erstellen von Testeinstellungen für manuelle Tests oder unter Erstellen von Einstellungen für automatisierte Tests als Teil eines Testplans.

    Weitere Informationen zum Installieren der Konfigurationsdatei finden Sie unter Gewusst wie: Installieren eines benutzerdefinierten Adapters für diagnostische Daten.

  12. Erstellen Sie die Projektmappe, um das Assembly des Adapters für diagnostische Daten zu erstellen.

  13. Informationen zum Installieren des benutzerdefinierten Editors finden Sie unter Gewusst wie: Installieren eines benutzerdefinierten Adapters für diagnostische Daten.

  14. Weitere Informationen zum Konfigurieren der Testeinstellungen auf eine Umgebung beim Ausführen von Tests finden Sie unter Erstellen von Testeinstellungen für manuelle Tests oder unter Erstellen von Einstellungen für automatisierte Tests als Teil eines Testplans.

  15. Um den Adapter für diagnostische Daten auszuwählen, müssen Sie zunächst vorhandene Testeinstellungen auswählen oder aus Microsoft Test Manager oder Microsoft Visual Studio 2010 neue Testeinstellungen erstellen. Der Adapter wird auf der Registerkarte Daten und Diagnose der Testeinstellungen mit dem Anzeigenamen angezeigt, den Sie der Klasse zugewiesen haben.

  16. Wenn Sie Tests in Microsoft Test Manager ausführen, können Sie diese Testeinstellungen dem Testplan zuweisen, bevor Sie die Tests ausführen, oder verwenden Sie den Befehl Ausführen mit Optionen, um Testeinstellungen zuzuweisen und zu überschreiben. Weitere Informationen zu Testeinstellungen finden Sie unter Einrichten von Computern und Sammeln von Diagnoseinformationen mithilfe von Testeinstellungen.

    Wenn Sie die Tests aus Microsoft Visual Studio 2010 ausführen, müssen Sie für diese Testeinstellungen festlegen, dass sie aktiv sind. Weitere Informationen zu Testeinstellungen finden Sie unter Erstellen von Testeinstellungen zum Ausführen von automatisierten Tests in Visual Studio.

  17. Führen Sie die Tests unter Verwendung der Testeinstellungen aus, wenn der Adapter für diagnostische Daten ausgewählt ist.

    Die von Ihnen angegebene Datendatei wird an die Testergebnisse angefügt.

Siehe auch

Referenz

DataCollectorConfigurationEditorAttribute

DataCollectionEvents

DataCollector

[T:Microsoft.VisualStudio.TestTools.Execution.DataCollectionSinkT:Microsoft.VisualStudio.TestTools.Execution.DataCollectorTypeUriAttribute]

DataCollectorFriendlyNameAttribute

DataCollectorEnabledByDefaultAttribute

Konzepte

Einrichten von Computern und Sammeln von Diagnoseinformationen mithilfe von Testeinstellungen

Gewusst wie: Erstellen eines benutzerdefinierten Editors für Daten im Adapter für diagnostische Daten

Weitere Ressourcen

Erstellen von Testeinstellungen zum Ausführen von automatisierten Tests in Visual Studio

Erstellen von Einstellungen für automatisierte Tests als Teil eines Testplans

Erstellen von Testeinstellungen für manuelle Tests