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
Vytvoření nového projektu knihovny třídy s názvem "MyDataCollector".
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.
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.
Chcete-li cestu k odkazu přidat do složky, zvolte Přidat složku.
Složky se zobrazí v seznamu odkaz cesty.
Zvolte Uložit všechny ikonu Uložit odkaz cesty.
Přidání sestavení Microsoft.VisualStudio.QualityTools.ExecutionCommon.
V Aplikaci Solution Explorer, klepněte pravým tlačítkem na odkazy a pak zvolte Přidat odkaz na.
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.
Klepněte na tlačítko OK.
Přidání sestavení Microsoft.VisualStudio.QualityTools.Common.
V aplikaci Solution Explorer klepněte pravým tlačítkem na odkazy a vyberte Přidat odkaz na.
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.
Klepněte na tlačítko OK.
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.
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.
Pomocí panelu Přidat uživatelský ovládací prvek popisek a název souboru změnit vlastnost Text:.
Pomocí panelu Přidat uživatelský ovládací prvek textové pole a změňte název na textBoxFileName.
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.
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í.
Zkopírujte soubor XML ze vzorku, které bylo dříve do souboru XML.Uložte soubor.
Ř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.
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.
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