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
Wenn für das Testprojekt bereits eine Datei app.config vorhanden ist, fahren Sie mit Definieren eines benutzerdefinierten Konfigurationabschnitts fort.
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.
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
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.
Erstellen Sie innerhalb des configSections-Elements ein section-Element.
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
Erstellen Sie hinter dem configSections-Element ein connectionStrings-Element.
Erstellen Sie innerhalb des connectionStrings-Elements zwei add-Elemente.
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
Erstellen Sie hinter dem connectionStrings-Element ein microsoft.visualstudio.testtools-Element. Dieser Abschnitt wurde beim Definieren eines benutzerdefinierten Konfigurationabschnitts erstellt.
Erstellen Sie innerhalb des microsoft.visualstudio.testtools-Elements ein dataSources-Element.
Erstellen Sie innerhalb des dataSources-Elements zwei add-Elemente.
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
Erstellen Sie eine Microsoft Access-Datenbank mit dem Namen testdatasource.accdb.
Erstellen Sie eine Tabelle mit dem Namen MyDataTable in testdatasource.accdb.
Erstellen Sie in MyDataTable zwei Felder mit den Namen Arg1 und Arg2 mit dem Datentyp Number.
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).
Speichern und schließen Sie die Datenbank.
Ä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
Erstellen Sie ein Microsoft Excel-Arbeitsblatt mit dem Namen data.xlsx.
Erstellen Sie ein Arbeitsblatt mit dem Namen Sheet1, falls dieses in data.xlsx noch nicht vorhanden ist.
Erstellen Sie die zwei Spaltenüberschriften Val1 und Val2 in Sheet1.
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).
Speichern und schließen Sie das Arbeitsblatt.
Ä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
Fügen Sie dem Testprojekt einen Komponententest hinzu.
Weitere Informationen finden Sie unter Erstellen und Ausführen von Komponententests für vorhandenen Code.
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"]); } } }
Sehen Sie sich die DataSource-Attribute an. Beachten Sie die Einstellungsnamen aus der Datei app.config.
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
Gewusst wie: Erstellen eines datengesteuerten Komponententests