Delen via


Overzicht: Een configuratiebestand gebruiken om een gegevensbron te definiëren

In dit scenario ziet u hoe u een gegevensbron gebruikt die is gedefinieerd in een app.config-bestand voor eenheidstests. U leert hoe u een app.config-bestand maakt waarmee een gegevensbron wordt gedefinieerd die kan worden gebruikt door de DataSourceAttribute-klasse. Taken die in dit scenario worden gepresenteerd, zijn onder andere:

  • Een app.config-bestand maken.

  • Een aangepaste configuratiesectie definiëren.

  • Verbindingsreeksen definiëren.

  • De gegevensbronnen definiëren.

  • Toegang tot de gegevensbronnen met behulp van de DataSourceAttribute-klasse.

Notitie

DataSourceAttribute wordt momenteel alleen ondersteund in .NET Framework.

Voorwaarden

U hebt het volgende nodig om deze walkthrough te voltooien:

  • Visual Studio Enterprise

  • Microsoft Access of Microsoft Excel om gegevens op te geven voor ten minste één van de testmethoden.

  • Een Visual Studio-oplossing die een testproject bevat.

Een app.config-bestand toevoegen aan het project

  1. Als uw testproject al een app.config-bestand heeft, gaat u naar Een aangepaste configuratiesectie definiëren.

  2. Klik met de rechtermuisknop op het testproject in Solution Explorer-en selecteer >Nieuw item toevoegen.

    Het venster Nieuw item toevoegen wordt geopend. Als u niet alle itemsjablonen ziet, kiest u Alle sjablonen weergevenen kiest u vervolgens de itemsjabloon.

  3. Selecteer de sjabloon Application Configuration File en klik op Add.

Een aangepaste configuratiesectie definiëren

Bekijk het bestand app.config. Deze bevat ten minste de XML-declaratie en een hoofdelement.

De aangepaste configuratiesectie toevoegen aan het app.config-bestand

  1. Het hoofdelement van app.config moet het configuratie- element zijn. Maak een configSections-element in het configuratie--element. De configSections- moet het eerste element in het app.config-bestand zijn.

  2. Maak binnen het configSections-element een sectie-element aan.

  3. Voeg in de sectie element een kenmerk toe met de naam name en wijs het toe aan een waarde van microsoft.visualstudio.testtools. Voeg een ander kenmerk toe met de naam type en wijs het toe aan een waarde van Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.

De sectie element moet er ongeveer als volgt uitzien:

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

Notitie

De assemblynaam moet overeenkomen met de versie die u gebruikt.

Verbindingsreeksen definiëren

De verbindingsreeksen definiëren providerspecifieke informatie voor toegang tot gegevensbronnen. Verbindingsreeksen die zijn gedefinieerd in configuratiebestanden, bieden herbruikbare gegevensprovidergegevens in een toepassing. In deze sectie maakt u twee verbindingsreeksen die worden gebruikt door gegevensbronnen die zijn gedefinieerd in de sectie Aangepaste configuratie.

Voorzichtigheid

De verbindingsreeks kan gevoelige gegevens bevatten (bijvoorbeeld een wachtwoord). De verbindingsreeks wordt opgeslagen in tekst zonder opmaak in broncode en in de gecompileerde assembly. Beperk de toegang tot de broncode en assembly om deze gevoelige informatie te beveiligen.

Verbindingsreeksen definiëren

  1. Nadat het configSections-element, maakt u een connectionStrings-element.

  2. Maak binnen het connectionStrings-element twee add-elementen aan.

  3. Maak in het eerste element de volgende kenmerken en waarden aan voor een verbinding met een Microsoft Access-database:

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

Maak in het tweede -element de volgende attributen en waarden aan voor een verbinding met een Microsoft Excel-spreadsheet.

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

Het element connectionStrings moet er ongeveer als volgt uitzien:

<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>

Gegevensbronnen definiëren

De sectie gegevensbronnen bevat vier kenmerken die door de testengine worden gebruikt om gegevens op te halen uit een gegevensbron.

  • name definieert de identiteit die wordt gebruikt door de DataSourceAttribute om op te geven welke gegevensbron moet worden gebruikt.

  • connectionString identificeert de verbindingsreeks die is gemaakt in de vorige sectie Verbindingsreeksen definiëren.

  • dataTableName definieert de tabel of het blad met de gegevens die in de test moeten worden gebruikt.

  • dataAccessMethod definieert de techniek voor het openen van gegevenswaarden in de gegevensbron.

In deze sectie definieert u twee gegevensbronnen voor gebruik in een eenheidstest.

Gegevensbronnen definiëren

  1. Nadat het connectionStrings element, maakt u een microsoft.visualstudio.testtools element. Deze sectie is gemaakt in de sectie Een aangepaste configuratie definiëren.

  2. Maak in de microsoft.visualstudio.testtools element een dataSources element.

  3. Maak binnen het dataSources element twee toevoegen elementen.

  4. In het eerste -element, voeg de volgende attributen en waarden toe voor een Microsoft Access-gegevensbron te maken.

Attribuut Waarden
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

Maak in het tweede -element de volgende attributen en waarden voor een Microsoft Excel-gegevensbron aan:

Attribuut Waarden
Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

Het element microsoft.visualstudio.testtools moet er ongeveer als volgt uitzien:

<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>

Het uiteindelijke app.config-bestand moet er ongeveer als volgt uitzien:

<?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>

Een eenheidstest maken die gebruikmaakt van gegevensbronnen die zijn gedefinieerd in app.config

Nu een app.config-bestand is gedefinieerd, maakt u een eenheidstest die gebruikmaakt van gegevens in de gegevensbronnen die zijn gedefinieerd in het app.config-bestand. In deze sectie gaan we het volgende doen:

  • Maak de gegevensbronnen in het app.config-bestand.

  • Gebruik de gegevensbronnen in twee testmethoden waarmee de waarden in elke gegevensbron worden vergeleken.

Een Microsoft Access-gegevensbron maken

  1. Maak een Microsoft Access-database met de naam testdatasource.accdb.

  2. Maak een tabel en geef deze een naam MyDataTable in testdatasource.accdb-.

  3. Maak twee velden in MyDataTable met de naam Arg1 en Arg2 met behulp van het gegevenstype Number.

  4. Voeg vijf entiteiten toe aan MyDataTable met de volgende waarden voor respectievelijk Arg1 en Arg2: (10,50), (3,2), (6,0), (0,8) en (12312.1000).

  5. Sla de database op en sluit deze.

  6. Wijzig de verbindingsreeks zodat deze verwijst naar de locatie van de database. Wijzig de waarde van Data Source zodat deze overeenkomt met de locatie van de database.

Een Microsoft Excel-gegevensbron maken

  1. Maak een Microsoft Excel-spreadsheet met de naam data.xlsx.

  2. Maak een blad met de naam Sheet1 als het nog niet bestaat in data.xlsx.

  3. Maak twee kolomkoppen en noem ze Val1 en Val2 in Sheet1.

  4. Voeg vijf entiteiten toe aan Sheet1 met de volgende waarden voor respectievelijk Val1 en Val2: (1,1), (2,2), (3,3), (4,4) en (5,0).

  5. Sla het werkblad op en sluit het.

  6. Wijzig de verbindingsreeks zodat deze verwijst naar de locatie van het werkblad. Wijzig de waarde van dbq om de locatie van het werkblad weer te geven.

Een eenheidstest maken met behulp van de app.config gegevensbronnen

  1. Voeg een eenheidstest toe aan het testproject.

  2. Vervang de automatisch gegenereerde inhoud van de eenheidstest door de volgende 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. Bekijk de kenmerken van DataSource. Let op de instellingsnamen uit het app.config-bestand.

  4. Bouw uw oplossing en voer MyTestMethod- en MyTestMethod2-tests uit.

Belangrijk

Implementeer items zoals gegevensbronnen, zodat ze in de implementatiemap toegankelijk zijn voor de test.