如何:为诊断数据适配器创建自定义数据编辑器
当您创建诊断数据适配器后,您可能希望用户配置特定数据,当您的自定义诊断数据适配器用于将选择测试设置。例如,您可以选择配置数据指定要提取的注册表项,要模拟的网络负载级别,或者在查找临时文件或要附加的工作文件的目录。
您必须使用配置文件来设置您的诊断数据适配器的初始值。可以提供自定义编辑器允许用户修改配置数据。
若要创建您的编辑器,您将创建一个用户控件实现 IDataCollectorConfigurationEditor。
您的诊断数据适配器可使用 DataCollectorConfigurationEditorAttribute 指定编辑器类用于编辑诊断数据的配置设置。
还可以指定要使用的默认配置数据。有关默认配置参见 用于创建诊断数据适配器的示例项目 。
,当使用时,请使用以下过程创建自定义编辑器更新测试设置的数据。自定义诊断数据适配器。
说明 |
---|
若要创建自定义编辑器,必须先创建具有 DataCollectorConfigurationEditorAttribute 应用于类的诊断数据适配器。在该属性中使用选项 HelpUri 属性为您的帮助内容源。有关如何创建诊断数据适配器的更多信息,请参见 如何:创建诊断数据适配器。 |
有关完整示例诊断数据适配器项目,包括自定义配置编辑器,请参见 用于创建诊断数据适配器的示例项目。
诊断数据适配器创建自定义编辑器
诊断数据适配器创建自定义编辑器
创建用户控件在诊断数据适配器的项:
右击包含诊断数据适配器类的代码项目,指向 add 然后指向 用户控件。
对于此示例,请添加一个标签添加到此文本的窗体:data file:和命名将允许用户输入所需的数据 " FileTextBox " 的文本框。
说明 目前仅支持 windows 窗体用户控件。
将这些行添加到声明部分:
using System.Xml; using Microsoft.VisualStudio.TestTools.Common; using Microsoft.VisualStudio.TestTools.Execution;
使此用户控件成为自定义编辑器。
右击在代码项目的用户控件并指向 查看代码。
设置类实现编辑器接口 IDataCollectorConfigurationEditor 如下所示:
public partial class MyDataConfigEditor : UserControl, IDataCollectorConfigurationEditor
右击代码中的 IDataCollectorConfigurationEditor ,然后选择 实现接口 命令。您必须为此接口实现的方法添加到类中。
添加 DataCollectorConfigurationEditorAttribute 到编辑器用户控件中以将它标识为诊断数据适配器编辑器,替换 公司, 产品和 版本 与相应信息诊断数据适配器的:
[DataCollectorConfigurationEditorTypeUri( "configurationeditor://MyCompany/MyConfigEditor/1.0")]
添加两个私有变量如下所示:
private DataCollectorSettings collectorSettings; private IServiceProvider ServiceProvider { get; set; }
添加代码以初始化诊断数据适配器的编辑器。可以添加默认值。在用户控件中的字段使用设置变量中的数据。这是在 XML 配置文件的 <DefaultConfiguration> 元素中适配器的数据。
public void Initialize( IServiceProvider svcProvider, DataCollectorSettings settings) { ServiceProvider = svcProvider; collectorSettings = settings; // Display the default file name as listed in the settings file. this.SuspendLayout(); this.FileTextBox.Text = getText(collectorSettings.Configuration); this.ResumeLayout(); }
添加代码以将来自编辑器中控件的数据存回诊断数据适配器 API 所需的格式如下所示:
public DataCollectorSettings SaveData() { collectorSettings.Configuration.InnerXml = String.Format( @"<MyCollectorName http://MyCompany/schemas/MyDiagnosticDataCollector/1.0""> <File FullPath=""{0}"" /> </MyCollectorName>", FileTextBox.Text); return collectorSettings; }
如果这对您很重要,添加代码以验证数据是否正确的。 VerifyData 方法,也可以由方法返回 true。
public bool VerifyData() { // Not currently verifying data return true; }
(可选) 可以添加代码重新设置数据添加到在 ResetToAgentDefaults() 方法的 XML 配置文件提供使用专用 getText() 方法的初始设置。
// Reset to default value from XML configuration // using a custom getText() method public void ResetToAgentDefaults() { this.FileTextBox.Text = getText(collectorSettings.DefaultConfiguration); } // Local method to read 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:MyCollectorName/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; }
生成解决方案。复制诊断数据适配器程序集和 XML 配置文件 (<diagnostic data adapter name>.dll.config) 到基于您的安装目录的以下位置: Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\DataCollectors。
说明 虽然配置编辑器可以在项目和与诊断数据适配器不同的程序集,它们也可位于同一程序集中。
若要使用正在测试的诊断数据适配器,必须从现有测试设置列表或创建从 Microsoft 测试管理器 或 Visual Studio 的新然后选择诊断数据适配器。
适配器。 数据和诊断 选项卡中显示您使用将分配给类的友好名称的设置。
若要配置诊断数据适配器的测试设置,在适配器名称旁边的下 配置 。
您的自定义编辑器此时将显示。
编辑自定义编辑器中的字段标记为 " 必需 ",然后选择 保存。
如果您是从运行测试时从 Microsoft 测试管理器测试,则可以将这些测试设置分配给测试计划,在运行测试前或使用 使用选项运行 命令分配测试设置,并重写测试设置。有关测试设置的更多信息,请参见 使用测试设置来设置计算机和收集诊断信息。
在将您的诊断数据适配器之前的新配置编辑器,必须将 DataCollectorConfigurationEditorAttribute 于每个诊断数据适配器类在客户端计算机上要使用该编辑器,并重新编译并重新安装它们。有关如何安装诊断数据适配器和配置编辑器的更多信息,请 如何:安装自定义诊断数据适配器参见。
运行测试使用了您的诊断数据适配器的测试设置。
您在编辑器中指定的数据文件将被附加到测试结果。
有关如何,当您运行测试,请参见 在 Microsoft 测试管理器中指定测试设置 或时,配置为测试设置的更多信息使用环境 使用 Microsoft 测试管理器为自动系统测试创建测试设置。
请参见
任务
参考
IDataCollectorConfigurationEditor
DataCollectorConfigurationEditorAttribute
DataCollectorConfigurationEditorAttribute