Freigeben über


Exemplarische Vorgehensweise: Verwenden einer Konfigurationsdatei zum Definieren einer Datenquelle

Diese exemplarische Vorgehensweise veranschaulicht, wie eine in der Datei app.config definierte Datenquelle für Komponententests verwendet wird. Sie erfahren, wie die Datei app.config zum Definieren einer Datenquelle erstellt wird, die von der DataSourceAttribute-Klasse verwendet werden kann. Die folgenden Aufgaben werden in dieser exemplarischen Vorgehensweise vorgestellt:

  • Erstellen der Datei app.config

  • Definieren eines benutzerdefinierten Konfigurationabschnitts

  • Definieren von Verbindungszeichenfolgen

  • Definieren der Datenquellen

  • Zugreifen auf die Datenquellen über die DataSourceAttribute-Klasse.

Vorbereitungsmaßnahmen

Zum Ausführen der exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Visual Studio Premium oder Visual Studio Ultimate

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

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

Erstellen der Datei App.config

So fügen Sie dem Projekt die Datei app.config hinzu

  1. Wenn für das Testprojekt bereits eine Datei app.config vorhanden ist, fahren Sie mit Definieren eines benutzerdefinierten Konfigurationabschnitts fort.

  2. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf das Testprojekt, wählen Sie Hinzuzufügen, und klicken Sie dann auf Neues Element.

    Das Fenster Neues Element hinzufügen wird geöffnet.

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

Definieren eines benutzerdefinierten Konfigurationabschnitts

Sehen Sie sich die Datei app.config an. Sie enthält mindestens die XML-Deklaration und ein Stammelement.

So fügen Sie der Datei app.config den benutzerdefinierten Konfigurationsabschnitt hinzu

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

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

  3. Fügen Sie dem section-Element ein Attribut mit dem Namen name hinzu, und weisen Sie ihm den Wert microsoft.visualstudio.testtools zu. Fügen Sie ein weiteres Attribut mit dem Namen type hinzu, und weisen Sie diesem den Wert Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a zu.

Das section-Element sollte wie folgt aussehen:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

Tipp

Der Assemblyname muss mit dem verwendeten Microsoft Visual Studio .NET-Frameworkbuild übereinstimmen. Legen Sie die Version auf 9.0.0.0 fest, wenn Sie Visual Studio .NET Framework 3.5 verwenden. Wenn Sie Visual Studio .NET Framework 2.0 verwenden, legen Sie die Version auf 8.0.0.0 fest, .

Definieren von Verbindungszeichenfolgen

Die Verbindungszeichenfolgen definieren anbieterspezifische Informationen für den Zugriff auf Datenquellen. In Konfigurationsdateien definierte Verbindungszeichenfolgen enthalten wiederverwendbare Datenanbieterinformationen für eine Anwendung. In diesem Abschnitt erstellen Sie zwei Verbindungszeichenfolgen, die von den im benutzerdefinierten Konfigurationsabschnitt definierten Datenquellen verwendet werden.

So definieren Sie Verbindungszeichenfolgen

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

  2. Erstellen Sie innerhalb des connectionStrings-Elements zwei add-Elemente.

  3. Erstellen Sie im ersten add-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 add-Element die folgenden Attribute und Werte für eine Verbindung mit einem Microsoft Excel-Arbeitsblatt:

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 Datenquellenabschnitt enthält vier Attribute, die vom Testmodul zum Abrufen von Daten aus einer Datenquelle verwendet werden.

  • name definiert die von DataSourceAttribute verwendete Identität, um die zu verwendende Datenquelle anzugeben.

  • connectionString bezeichnet die im vorhergehenden Abschnitt in der Definition der Verbindungszeichenfolge erstellte Verbindungszeichenfolge.

  • dataTableName definiert die Tabelle oder das Blatt mit den im Test zu verwendenden Daten.

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

In diesem Abschnitt definieren Sie zwei Datenquellen für die Verwendung in einem Komponententest.

So definieren Sie Datenquellen

  1. Erstellen Sie hinter dem connectionStrings-Element ein microsoft.visualstudio.testtools-Element. Dieser Abschnitt wurde beim Definieren eines benutzerdefinierten Konfigurationabschnitts erstellt.

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

  3. Erstellen Sie innerhalb des dataSources-Elements zwei add-Elemente.

  4. Erstellen Sie im ersten add-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 add-Element die folgenden Attribute und Werte für eine Microsoft Excel-Datenquelle:

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 Datei app.config sollte in etwa folgendermaßen aussehen:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </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 mit in der Datei app.config definierten Datenquellen

Nachdem die Datei app.config definiert ist, erstellen Sie einen Komponententest, für den Daten aus den in der Datei app.config definierten Datenquellen verwendet werden. In diesem Abschnitt wird Folgendes beschrieben:

  • Erstellen der in der Datei app.config angegebenen Datenquellen

  • Verwenden der Datenquellen in zwei Testmethoden, bei denen die Werte der beiden Datenquellen verglichen werden.

So erstellen Sie eine Microsoft Access-Datenquelle

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

  2. Erstellen Sie eine Tabelle mit dem Namen MyDataTable in testdatasource.accdb.

  3. Erstellen Sie in MyDataTable zwei Felder mit den Namen Arg1 und Arg2 mit dem Datentyp Number.

  4. Fügen Sie MyDataTable fünf Entitäten mit folgenden Werten für Arg1 und Arg2 hinzu: (10,50), (3,2), (6,0), (0,8) bzw. (12312,1000).

  5. Speichern und schließen Sie die Datenbank.

  6. Ändern Sie die Verbindungszeichenfolge, um auf den Speicherort der Datenbank zu verweisen. Ändern Sie den Wert von Data Source, um den Speicherort der Datenbank anzugeben.

So erstellen Sie eine Microsoft Excel-Datenquelle

  1. Erstellen Sie ein Microsoft Excel-Arbeitsblatt mit dem Namen data.xlsx.

  2. Erstellen Sie ein Arbeitsblatt mit dem Namen Sheet1, falls dieses in data.xlsx noch nicht vorhanden ist.

  3. Erstellen Sie die zwei Spaltenüberschriften Val1 und Val2 in Sheet1.

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

  5. Speichern und schließen Sie das Arbeitsblatt.

  6. Ändern Sie die Verbindungszeichenfolge, um auf den Speicherort des Arbeitsblattes zu verweisen. Ändern Sie den Wert von dbq, um den Speicherort des Arbeitsblattes anzugeben.

So erstellen Sie einen Komponententest unter Verwendung der Datenquellen aus app.config

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

    Weitere Informationen finden Sie unter Erstellen und Ausführen von Komponententests für vorhandenen Code.

  2. Ersetzen Sie den automatisch generierten Inhalt des Komponententests durch 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. Sehen Sie sich die DataSource-Attribute an. Beachten Sie die Einstellungsnamen aus der Datei app.config.

  4. Erstellen Sie die Projektmappe, und führen Sie die Tests MyTestMethod und MyTestMethod2 aus.

Wichtig

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

Siehe auch

Konzepte

Überprüfen von Code mithilfe von Komponententests

Erstellen und Ausführen von Komponententests für vorhandenen Code

Testen der Anwendung

Gewusst wie: Erstellen eines datengesteuerten Komponententests