Przykładowy projekt do tworzenia diagnostyczne karta danych
"MyDiagnosticDataAdapter" jest to karta proste dane diagnostyczne można dołączyć pliku dziennika do wyników badań, po uruchomieniu testów.
Konieczne będzie uprawnienia administracyjne na dowolnym komputerze gdzie modułów zbierających dane diagnostyczne lub konfiguracji jest zainstalowany edytor.
Przykład
W przykładzie pokazano, jak wykonać następujące zadania:
Stosowanie atrybutów umożliwiających wykrywalne klasy do Microsoft Test Manager jako karta danych diagnostycznych.
Stosowanie atrybutów umożliwiających wykrywalne klasy formantu użytkownika do Microsoft Test Manager jako edytora wiadomości używane do zmiany konfiguracji karty danych diagnostycznych.
Dane konfiguracji domyślnej dostępu.
Zarejestruj się w określonych zdarzeń zbieranie danych diagnostycznych.
Dołącz plik dziennika, wysyłając go do 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;
}
}
}
Jest to próbka edytora konfiguracji, karty danych diagnostycznych.Dodaj formant użytkownika do projektu i utworzyć bardzo prosty formularz, który ma etykietę ("Nazwa pliku dziennika:") i pola tekstowego o nazwie "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;
}
}
}
Poniżej przedstawiono przykładowy plik konfiguracyjny dla Edytora konfiguracji modułów zbierających dane diagnostyczne.
<?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>
Kompilowanie kodu
Aby utworzyć projekt kodu dla tej karty diagnostyczne
Utwórz nowy projekt biblioteki klasy o nazwie "MyDataCollector".
W Solution Explorer, kliknij prawym przyciskiem myszy projekt, a następnie wybierz polecenie Właściwości.Aby wybrać folder, aby dodać, wybierz polecenie Ścieżki odniesienia i wybierz przycisk wielokropka (…).
Ścieżka odwołania wybierz jest wyświetlane okno dialogowe.
Zaznacz następującą ścieżkę, na podstawie katalogu instalacji: Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies.Wybierz OK.
Aby dodać folder do ścieżki odniesienia, wybierz polecenie Dodaj Folder.
Folder jest wyświetlane na liście odniesienia ścieżki.
Wybierz Zapisz wszystkie ikonę, aby zapisać ścieżki odniesienia.
Dodawanie zestawu Microsoft.VisualStudio.QualityTools.ExecutionCommon.
W Solution Explorer, kliknij prawym przyciskiem myszy odniesienia i wybierz polecenie Dodaj odwołanie.
Wybierz przeglądać i zlokalizuj Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.
Tego zestawu można znaleźć w Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies.
Wybierz OK.
Dodawanie zestawu Microsoft.VisualStudio.QualityTools.Common.
W oknie Solution Explorer, kliknij prawym przyciskiem myszy odniesienia i wybierz Dodaj odwołanie.
Wybierz przeglądać i zlokalizuj Microsoft.VisualStudio.QualityTools.Common.dll.
Tego zestawu można znaleźć w Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies.
Wybierz OK.
Skopiuj klasy karty danych diagnostycznych, który został wymieniony we wcześniejszej części tego dokumentu do klasy dla biblioteki klas.Zapisz tę klasę.
Aby dodać formant użytkownika do projektu, projekt MyDataCollector prawym przyciskiem myszy w oknie Solution Explorer, wskaż Dodaj, a następnie wybierz polecenie Kontrola użytkownika.Wybierz dodać.
Za pomocą przybornika, dodać etykietę do formantu użytkownika i zmienić właściwości tekstu do pliku o nazwie:.
Za pomocą przybornika, Dodaj pole tekstowe do formantu użytkownika i zmień nazwę na textBoxFileName.
W Solution Explorer, kliknij prawym przyciskiem myszy formant użytkownika, a następnie wybierz polecenie widoku Kod. Ta klasa formantu użytkownika należy zastąpić klasy kontroli użytkownika, który został wymieniony wcześniej w tym dokumencie.Zapisz tę klasę.
[!UWAGA]
Domyślnie formant użytkownika nosi nazwę UserControl1.Upewnij się, że kod klasy formantu użytkownika używa nazwy formantu użytkownika.
Aby utworzyć plik konfiguracji w Solution Explorer kliknij prawym przyciskiem myszy roztwór, wskaż polecenie Dodaj, a następnie wybierz polecenie Nowego elementu.Wybierz wybrać Pliku konfiguracyjnego aplikacji, a następnie wybierz polecenie Dodaj.Spowoduje to dodanie do pliku o nazwie App.config do rozwiązania.
Skopiuj plik XML z próbki, który został dostarczony wcześniej do pliku XML.Zapisz plik.
Budowanie roztworu, a następnie skopiuj zgromadzenie zbudowany i App.config pliku do Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\DataCollectors katalogu.
Utwórz ustawienia badania, korzystające z tej karty diagnostyczne niestandardowych danych.Skonfiguruj ustawienia test do zbierania pliku, który istnieje.
Jeśli są uruchomione testy z Microsoft Test Manager, można przypisać te ustawienia testu do planu badań, przed uruchomieniem programu badań lub użyć Uruchom przy użyciu opcji polecenia Testuj ustawienia przypisywania i zastępowania testowania ustawień.Aby uzyskać więcej informacji na temat Testuj ustawienia, zobacz Konfigurowanie maszyn i zbierania informacji diagnostycznych przy użyciu ustawień testu.
Uruchom testy za pomocą Testuj ustawienia z karty danych diagnostycznych zaznaczone.
Plik danych, który zostanie określony będzie dołączony do wyników badań, gdy badanie jest wykonywane.
Zobacz też
Koncepcje
Jak: tworzenie diagnostyczne karta danych
Jak: tworzenie edytora niestandardowe dla danych dla karty danych diagnostycznych
Jak: Instalowanie karty danych diagnostycznych niestandardowe
Tworzenie diagnostyki karty danych do zbierania danych niestandardowych lub wpływać na maszynie