Gewusst wie: Erstellen eines Adapters für diagnostische Daten
Um einen Adapter für diagnostische Daten zu erstellen, müssen Sie mit Visual Studio eine Klassenbibliothek erstellen und dann die APIs der Adapter für diagnostische Daten hinzufügen, die Visual Studio 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 Visual Studio 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 |
---|---|
Start des Testlaufs |
|
Ende des Testlaufs |
|
Start jedes Tests im Testlauf |
|
Ende jedes Tests im Testlauf |
|
Start jedes Testschritts in einem Test |
|
Ende jedes Testschritts in einem Test |
Hinweis
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
Erstellen Sie eine neue Klassenbibliothek.
Wählen Sie im Menü Datei die Option Neu, und zeigen Sie dann auf Neues Projekt.
Wählen Sie unter Projekttypen die zu verwendende Sprache aus.
Wählen Sie unter Von Visual Studio installierte Vorlagen die Option Klassenbibliothek aus.
Geben Sie einen Namen für den Adapter für diagnostische Daten ein.
Klicken Sie auf OK.
Fügen Sie die Assembly Microsoft.VisualStudio.QualityTools.ExecutionCommon hinzu.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und wählen Sie anschließend den Befehl Verweis hinzufügen.
Wählen Sie .NET, und suchen Sie nach Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.
Klicken Sie auf OK.
Fügen Sie die Assembly Microsoft.VisualStudio.QualityTools.Common hinzu.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und wählen Sie anschließend den Befehl Verweis hinzufügen aus.
Wählen Sie /.NET, und suchen Sie Microsoft.VisualStudio.QualityTools.Common.dll.
Klicken Sie auf OK.
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;
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")]
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.
Hinweis
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.
Die Klasse für den Adapter für diagnostische Daten muss wie folgt von der DataCollector-Klasse erben:
public class MyDiagnosticDataAdapter : DataCollector
Fügen Sie die lokalen Variablen wie folgt hinzu:
private DataCollectionEvents dataEvents; private DataCollectionLogger dataLogger; private DataCollectionSink dataSink; private XmlElement configurationSettings;
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); } }
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.
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.
Hinweis
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"> <DataCollector typeUri="datacollector://MyCompany/MyProduct/1.0"> <DefaultConfiguration> <!-- Your default config settings --> <Binaries> <Binary FullPath="C:\Example\Example.dll"/> <Binary FullPath="\\Server2\Example2.dll"/> </Binaries> <Symbols> <Symbol FullPath="\\ExampleServer\ExampleSymbol.pdb"/> </Symbols> </DefaultConfiguration> </DataCollector> </DataCollectorConfiguration> </configuration>
Hinweis
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 Sammeln weiterer Diagnosedaten in manuellen Tests oder unter Erstellen von Testeinstellungen für automatisierte Systemtests mit Microsoft Test Manager.
Weitere Informationen zum Installieren der Konfigurationsdatei finden Sie unter Gewusst wie: Installieren eines benutzerdefinierten Adapters für diagnostische Daten.
Erstellen Sie die Projektmappe, um das Assembly des Adapters für diagnostische Daten zu erstellen.
Informationen zum Installieren des benutzerdefinierten Editors finden Sie unter Gewusst wie: Installieren eines benutzerdefinierten Adapters für diagnostische Daten.
Weitere Informationen zum Konfigurieren der Testeinstellungen auf eine Umgebung beim Ausführen von Tests finden Sie unter Sammeln weiterer Diagnosedaten in manuellen Tests oder unter Erstellen von Testeinstellungen für automatisierte Systemtests mit Microsoft Test Manager.
Um den Adapter für diagnostische Daten auszuwählen, müssen Sie zunächst vorhandene Testeinstellungen auswählen oder in Microsoft Test-Manager oder Visual Studio neue Testeinstellungen erstellen. Der Adapter wird auf der Registerkarte Daten und Diagnose der Testeinstellungen mit dem Anzeigenamen angezeigt, den Sie der Klasse zugewiesen haben.
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 Visual Studio ausführen, müssen Sie für diese Testeinstellungen festlegen, dass sie aktiv sind. Weitere Informationen zu Testeinstellungen finden Sie unter Angeben von Testeinstellungen für Visual Studio-Tests.
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
Aufgaben
Erstellen von Testeinstellungen für automatisierte Systemtests mit Microsoft Test Manager
Referenz
DataCollectorConfigurationEditorAttribute
DataCollectorFriendlyNameAttribute
DataCollectorEnabledByDefaultAttribute
Konzepte
Einrichten von Computern und Sammeln von Diagnoseinformationen mithilfe von Testeinstellungen