Freigeben über


Exemplarische Vorgehensweise: Verwenden einer Konfigurationsdatei zum Definieren einer Datenquelle

In dieser exemplarischen Vorgehensweise wird die Verwendung einer Datenquelle veranschaulicht, die in einer app.config-Datei für Komponententests definiert ist. Sie erfahren, wie Sie eine app.config Datei erstellen, die eine Datenquelle definiert, die von der DataSourceAttribute Klasse verwendet werden kann. Die in dieser exemplarischen Vorgehensweise dargestellten Aufgaben umfassen Folgendes:

  • Erstellen einer app.config Datei.

  • Definieren eines benutzerdefinierten Konfigurationsabschnitts.

  • Definieren von Verbindungszeichenfolgen.

  • Definieren der Datenquellen.

  • Zugreifen auf die Datenquellen mithilfe der DataSourceAttribute-Klasse.

Anmerkung

DataSourceAttribute wird derzeit nur in .NET Framework unterstützt.

Voraussetzungen

Um diese Anleitung abzuschließen, benötigen Sie Folgendes:

  • Visual Studio Enterprise

  • Entweder Microsoft Access oder Microsoft Excel, um Daten für mindestens eine der Testmethoden bereitzustellen.

  • Eine Visual Studio 2012-Projektmappe, die ein Testprojekt enthält.

Hinzufügen einer app.config Datei zum Projekt

  1. Wenn Ihr Testprojekt bereits über eine app.config Datei verfügt, wechseln Sie zu Definieren eines benutzerdefinierten Konfigurationsabschnitts.

  2. Klicken Sie mit der rechten Maustaste auf Ihr Testprojekt im Projektmappen-Explorer, und wählen Sie dann >Neues Element hinzufügenaus.

    Das Fenster Neues Element hinzufügen wird geöffnet. Wenn nicht alle Elementvorlagen angezeigt werden, wählen Sie Alle Vorlagen anzeigenaus, und wählen Sie dann die Elementvorlage aus.

  3. Wählen Sie die Vorlage Anwendungskonfigurationsdatei aus, und klicken Sie dann auf Hinzufügen.

Definieren eines benutzerdefinierten Konfigurationsabschnitts

Überprüfen Sie die app.config Datei. Sie enthält mindestens die XML-Deklaration und ein Stammelement.

So fügen Sie der datei app.config den Abschnitt "Benutzerdefinierte Konfiguration" hinzu

  1. Das Stammelement von app.config sollte das Konfigurationselement sein. Erstellen Sie ein configSections-Element innerhalb des configuration-Elements. Die configSections muss das erste Element in der app.config-Datei sein.

  2. Erstellen Sie innerhalb des configSections-Elements ein section-Element.

  3. Fügen Sie im Abschnitt Element ein Attribut namens name hinzu, und weisen Sie es einem Wert von microsoft.visualstudio.testtoolszu. Fügen Sie ein weiteres Attribut namens type hinzu, und weisen Sie es einem Wert von Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensionszu.

Der Abschnitt Element sollte etwa wie folgt aussehen:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />

Anmerkung

Der Assemblyname muss mit der version übereinstimmen, die Sie verwenden.

Definieren von Verbindungszeichenfolgen

Die Verbindungszeichenfolgen definieren anbieterspezifische Informationen für den Zugriff auf Datenquellen. Verbindungszeichenfolgen, die in Konfigurationsdateien definiert sind, stellen wiederverwendbare Datenanbieterinformationen in einer Anwendung bereit. In diesem Abschnitt erstellen Sie zwei Verbindungszeichenfolgen, die von Datenquellen verwendet werden, die im Abschnitt "Benutzerdefinierte Konfiguration" definiert sind.

Vorsicht

Die Verbindungszeichenfolge kann vertrauliche Daten enthalten (z. B. ein Kennwort). Die Verbindungszeichenfolge wird im Quellcode und in der kompilierten Assembly als Klartext gespeichert. Beschränken Sie den Zugriff auf den Quellcode und die Assembly, um diese vertraulichen Informationen zu schützen.

So definieren Sie Verbindungszeichenfolgen

  1. Erstellen Sie nach dem configSections--Element ein connectionStrings--Element.

  2. Erstellen Sie innerhalb des connectionStrings-Elements zwei Hinzufügen-Elemente.

  3. Erstellen Sie im ersten Hinzufügen-Element die folgenden Attribute und Werte für eine Verbindung mit einer Microsoft Access-Datenbank:

Attribut Werte
name "MyJetConn"
connectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

Erstellen Sie im zweiten Hinzufügen-Element die folgenden Attribute und Werte für eine Verbindung mit einem Microsoft Excel-Arbeitsblatt:

Attribut Werte
name "MyExcelConn"
connectionString "Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5"
providerName "System.Data.Odbc"

Das connectionStrings--Element sollte wie folgt aussehen:

<connectionStrings>
    <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
    <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>

Definieren von Datenquellen

Der Abschnitt "Datenquellen" enthält vier Attribute, die vom Testmodul zum Abrufen von Daten aus einer Datenquelle verwendet werden.

  • name definiert die vom DataSourceAttribute verwendete Identität, um anzugeben, welche Datenquelle verwendet werden soll.

  • connectionString identifiziert die im vorherigen Abschnitt "Verbindungszeichenfolgen definieren" erstellte Verbindungszeichenfolge.

  • dataTableName definiert die Tabelle oder das Blatt, die die im Test zu verwendenden Daten enthält.

  • dataAccessMethod definiert die Technik für den Zugriff auf Datenwerte in der Datenquelle.

In diesem Abschnitt definieren Sie zwei Datenquellen, die in einem Komponententest verwendet werden sollen.

So definieren Sie Datenquellen

  1. Erstellen Sie nach dem connectionStrings--Element ein microsoft.visualstudio.testtools--Element. Dieser Abschnitt wurde im Abschnitt "Benutzerdefinierte Konfiguration definieren" erstellt.

  2. Erstellen Sie innerhalb des microsoft.visualstudio.testtools--Elements ein dataSources--Element.

  3. Erstellen Sie innerhalb des dataSources-Elements zwei Hinzufügen-Elemente.

  4. Erstellen Sie im ersten Hinzufügen-Element die folgenden Attribute und Werte für eine Microsoft Access-Datenquelle:

Attribut Werte
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

Erstellen Sie im zweiten Hinzufügen-Element die folgenden Attribute und Werte für eine Microsoft Excel-Datenquelle:

Attribut Werte
Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

Das "microsoft.visualstudio.testtools"-Element sollte wie folgt aussehen:

<microsoft.visualstudio.testtools>
    <dataSources>
        <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
        <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
    </dataSources>
</microsoft.visualstudio.testtools>

Die endgültige app.config Datei sollte etwa wie folgt aussehen:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
    </configSections>
    <connectionStrings>
        <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
        <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
    </connectionStrings>
    <microsoft.visualstudio.testtools>
        <dataSources>
            <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
            <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
        </dataSources>
    </microsoft.visualstudio.testtools>
</configuration>

Erstellen eines Komponententests, der datenquellen verwendet, die in app.config definiert sind

Nachdem nun eine app.config Datei definiert wurde, erstellen Sie einen Komponententest, der Daten verwendet, die sich in den Datenquellen befinden, die in der datei app.config definiert sind. In diesem Abschnitt werden wir Folgendes ausführen:

  • Erstellen Sie die In der app.config Datei gefundenen Datenquellen.

  • Verwenden Sie die Datenquellen in zwei Testmethoden, die die Werte in jeder Datenquelle vergleichen.

So erstellen Sie eine Microsoft Access-Datenquelle

  1. Erstellen Sie eine Microsoft Access-Datenbank mit dem Namen testdatasource.accdb.

  2. Erstellen Sie eine Tabelle, und nennen Sie sie MyDataTable in testdatasource.accdb.

  3. Erstellen Sie zwei Felder in MyDataTable mit dem Namen Arg1 und Arg2 mithilfe des datentyps "Number".

  4. Fügen Sie fünf Entitäten zu MyDataTable mit den folgenden Werten für Arg1 bzw. Arg2hinzu: (10,50), (3,2), (6,0), (0,8) und (12312.1000).

  5. Speichern und schließen Sie die Datenbank.

  6. Ändern Sie die Verbindungszeichenfolge so, dass sie auf den Speicherort der Datenbank verweist. Ändern Sie den Wert von Data Source, um den Speicherort der Datenbank widerzuspiegeln.

So erstellen Sie eine Microsoft Excel-Datenquelle

  1. Erstellen Sie eine Microsoft Excel-Kalkulationstabelle mit dem Namen data.xlsx.

  2. Erstellen Sie ein Blatt mit dem Namen Sheet1, wenn es nicht bereits in data.xlsxvorhanden ist.

  3. Erstellen Sie in Sheet1zwei Spaltenüberschriften und benennen Sie sie Val1 und Val2.

  4. Fügen Sie fünf Entitäten zu Sheet1 mit den folgenden Werten für Val1 bzw. Val2hinzu: (1,1), (2,2), (3,3), (4,4) und (5,0).

  5. Speichern und schließen Sie die Kalkulationstabelle.

  6. Ändern Sie die Verbindungszeichenfolge so, dass sie auf die Position der Kalkulationstabelle zeigt. Ändern Sie den Wert von dbq, um die Position der Kalkulationstabelle widerzuspiegeln.

So erstellen Sie einen Komponententest mithilfe der app.config Datenquellen

  1. Fügen Sie dem Testprojekt einen Komponententest hinzu.

  2. Ersetzen Sie den automatisch generierten Inhalt des Komponententests durch den folgenden Code:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace TestProject1
    {
         [TestClass]
        public class UnitTest1
        {
            private TestContext context;
    
            public TestContext TestContext
            {
                get { return context; }
                set { context = value; }
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\testdatasource.accdb")]
            [DataSource("MyJetDataSource")]
            public void MyTestMethod()
            {
                int a = Int32.Parse(context.DataRow["Arg1"].ToString());
                int b = Int32.Parse(context.DataRow["Arg2"].ToString());
                Assert.AreNotEqual(a, b, "A value was equal.");
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\data.xlsx")]
            [DataSource("MyExcelDataSource")]
            public void MyTestMethod2()
            {
                Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]);
            }
        }
    }
    
  3. Untersuchen Sie die DataSource-Attribute. Beachten Sie die Einstellungsnamen aus der datei app.config.

  4. Erstellen Sie Ihre Lösung, und führen Sie MyTestMethod- und MyTestMethod2-Tests aus.

Wichtig

Stellen Sie Elemente wie Datenquellen bereit, damit sie für den Test im Bereitstellungsverzeichnis zugänglich sind.