如何:为诊断数据适配器创建自定义数据编辑器

当您创建诊断数据适配器后,您可能希望用户配置特定数据,当您的自定义诊断数据适配器用于将选择测试设置。 例如,您可以选择配置数据指定要提取的注册表项,要模拟的网络负载级别,或者在查找临时文件或要附加的工作文件的目录。

您必须使用配置文件来设置您的诊断数据适配器的初始值。 可以提供自定义编辑器允许用户修改配置数据。

若要创建您的编辑器,您将创建一个用户控件实现 IDataCollectorConfigurationEditor

您的诊断数据适配器可使用 DataCollectorConfigurationEditorAttribute 指定编辑器类用于编辑诊断数据的配置设置。

还可以指定要使用的默认配置数据。 有关默认配置参见 用于创建诊断数据适配器的示例项目

,当使用时,请使用以下过程创建自定义编辑器更新测试设置的数据。自定义诊断数据适配器。

备注

若要创建自定义编辑器,必须先创建具有 DataCollectorConfigurationEditorAttribute 应用于类的诊断数据适配器。在该属性中使用选项 HelpUri 属性为您的帮助内容源。有关如何创建诊断数据适配器的更多信息,请参见 如何:创建诊断数据适配器

有关完整示例诊断数据适配器项目,包括自定义配置编辑器,请参见 用于创建诊断数据适配器的示例项目

诊断数据适配器创建自定义编辑器

诊断数据适配器创建自定义编辑器

  1. 创建用户控件在诊断数据适配器的项:

    1. 右击包含诊断数据适配器类的代码项目,指向 add 然后指向 用户控件

    2. 对于此示例,请添加一个标签添加到此文本的窗体:data file:和命名将允许用户输入所需的数据 " FileTextBox " 的文本框。

    备注

    目前仅支持 windows 窗体用户控件。

  2. 将这些行添加到声明部分:

    using System.Xml;
    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    
  3. 使此用户控件成为自定义编辑器。

    1. 右击在代码项目的用户控件并指向 查看代码

    2. 设置类实现编辑器接口 IDataCollectorConfigurationEditor 如下所示:

       public partial class MyDataConfigEditor :
            UserControl, IDataCollectorConfigurationEditor
    
    1. 右击代码中的 IDataCollectorConfigurationEditor ,然后选择 实现接口 命令。 您必须为此接口实现的方法添加到类中。

    2. 添加 DataCollectorConfigurationEditorAttribute 到编辑器用户控件中以将它标识为诊断数据适配器编辑器,替换 公司产品版本 与相应信息诊断数据适配器的:

      [DataCollectorConfigurationEditorTypeUri(
          "configurationeditor://MyCompany/MyConfigEditor/1.0")]
      
  4. 添加两个私有变量如下所示:

    private DataCollectorSettings collectorSettings;
    private IServiceProvider ServiceProvider { get; set; }
    
  5. 添加代码以初始化诊断数据适配器的编辑器。 可以添加默认值。在用户控件中的字段使用设置变量中的数据。 这是在 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();
    }
    
  6. 添加代码以将来自编辑器中控件的数据存回诊断数据适配器 API 所需的格式如下所示:

    public DataCollectorSettings SaveData()
    {
        collectorSettings.Configuration.InnerXml =
            String.Format(
    @"<MyCollectorName
        http://MyCompany/schemas/MyDiagnosticDataCollector/1.0"">
      <File FullPath=""{0}"" />
    </MyCollectorName>",
        FileTextBox.Text);
        return collectorSettings;
    }
    
  7. 如果这对您很重要,添加代码以验证数据是否正确的。 VerifyData 方法,也可以由方法返回 true。

    public bool VerifyData()
    {
        // Not currently verifying data
        return true;
    }
    
  8. (可选) 可以添加代码重新设置数据添加到在 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;
    }
    
  9. 生成解决方案。 复制诊断数据适配器程序集和 XML 配置文件 (<diagnostic data adapter name>.dll.config) 到基于您的安装目录的以下位置: Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\DataCollectors

    备注

    虽然配置编辑器可以在项目和与诊断数据适配器不同的程序集,它们也可位于同一程序集中。

  10. 若要使用正在测试的诊断数据适配器,必须从现有测试设置列表或创建从 Microsoft 测试管理器 或 Visual Studio 的新然后选择诊断数据适配器。

    适配器。 数据和诊断 选项卡中显示您使用将分配给类的友好名称的设置。

  11. 若要配置诊断数据适配器的测试设置,在适配器名称旁边的下 配置

    您的自定义编辑器此时将显示。

  12. 编辑自定义编辑器中的字段标记为 " 必需 ",然后选择 保存

  13. 如果您是从运行测试时从 Microsoft 测试管理器测试,则可以将这些测试设置分配给测试计划,在运行测试前或使用 使用选项运行 命令分配测试设置,并重写测试设置。 有关测试设置的更多信息,请参见 使用测试设置来设置计算机和收集诊断信息

  14. 在将您的诊断数据适配器之前的新配置编辑器,必须将 DataCollectorConfigurationEditorAttribute 于每个诊断数据适配器类在客户端计算机上要使用该编辑器,并重新编译并重新安装它们。 有关如何安装诊断数据适配器和配置编辑器的更多信息,请 如何:安装自定义诊断数据适配器参见。

  15. 运行测试使用了您的诊断数据适配器的测试设置。

    您在编辑器中指定的数据文件将被附加到测试结果。

有关如何,当您运行测试,请参见 在 Microsoft 测试管理器中指定测试设置 或时,配置为测试设置的更多信息使用环境 使用 Microsoft 测试管理器为自动系统测试创建测试设置

请参见

任务

用于创建诊断数据适配器的示例项目

参考

IDataCollectorConfigurationEditor

DataCollectorConfigurationEditorAttribute

DataCollectorConfigurationEditorAttribute

概念

创建诊断数据适配器以收集自定义数据或影响测试计算机

使用测试设置来设置计算机和收集诊断信息