Condividi tramite


Procedura dettagliata: utilizzo di un file di configurazione per definire un'origine dati

Aggiornamento: novembre 2007

In questa procedura dettagliata vengono illustrate le modalità di utilizzo delle origini dati definite in un file app.config per l'esecuzione di unit test. Sarà illustrato come creare un file app.config per la definizione di origini dati che possono essere utilizzate dalla classe DataSourceAttribute. In questa procedura sono incluse, tra le altre, le seguenti attività:

  • Creazione di un file app.config.

  • Definizione di una sezione di configurazione personalizzata.

  • Definizione di stringhe di connessione.

  • Definizione di origini dati.

  • Accesso alle origini dati utilizzando la classe DataSourceAttribute.

Prerequisiti

Per completare questa procedura, è necessario:

  • Visual Studio Team System Test Edition

  • Microsoft Access o Microsoft Excel per fornire i dati per almeno uno dei metodi di test.

  • Una soluzione Visual Studio 2005 contenente un progetto di test.

Creazione del file App.config

Per aggiungere un file app.config al progetto

  1. Se nel progetto del test è già presente un file app.config, andare alla sezione Definizione di una sezione di configurazione personalizzata.

  2. Fare clic con il pulsante destro del mouse sul progetto del test in Esplora soluzioni, scegliere Aggiungi e fare clic su Nuovo elemento.

    Verrà visualizzata la finestra Aggiungi nuovo elemento.

  3. Selezionare il modello File di configurazione dell'applicazione e fare clic su Aggiungi.

Definizione di una sezione di configurazione personalizzata

Esaminare il file app.config. È presente almeno una dichiarazione XML e un elemento radice.

Per aggiungere una sezione di configurazione personalizzata nel file app.config

  1. L'elemento radice di app.config deve essere un elemento configuration. Creare un elemento configSections all'interno dell'elemento configuration. configSections deve essere il primo elemento del file app.config.

  2. All'interno dell'elemento configSections, creare un elemento section.

  3. Nell'elemento section, aggiungere un attributo denominato name e assegnare a tale attributo un valore pari a microsoft.visualstudio.testtools. Aggiungere un altro attributo denominato type e assegnare a tale attributo un valore pari a Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

L'elemento section è simile al seguente:

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

Definizione delle stringhe di connessione

Le stringhe di connessione definiscono informazioni specifiche del provider per l'accesso alle origini dati. Le stringhe di connessione definite nei file di configurazione forniscono informazioni sul provider dei dati riutilizzabili nell'ambito dell'applicazione. In questa sezione, verranno create due stringhe di connessione che saranno utilizzate dalle origini dati definite nella sezione di configurazione personalizzata.

Per definire le stringhe di connessione

  1. Dopo l'elemento configSections, creare un elemento connectionStrings.

  2. All'interno dell'elemento connectionStrings, creare due elementi add.

  3. Nel primo elemento add, creare i seguenti attributi e valori per una connessione a un database Microsoft Access:

Attributo

Values

name

"MyJetConn"

connectionString

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;"

providerName

"System.Data.OleDb"

Nel secondo elemento add, creare i seguenti attributi e valori per una connessione a un foglio di lavoro Microsoft Excel:

name

"MyExcelConn"

connectionString

"Dsn=Excel Files;dbq=data.xls;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5"

providerName

"System.Data.Odbc"

L'elemento connectionStrings è simile al seguente:

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

Definizione di origini dati

Nella sezione sulle origini dati sono riportati quattro attributi utilizzati dal modulo di test per richiamare i dati da un'origine dati.

  • In name viene definita l'identità utilizzata da DataSourceAttribute per specificare quali origini dati utilizzare.

  • connectionString consente di identificare la stringa di connessione creata nella precedente sezione Definizione delle stringhe di connessione.

  • dataTableName consente di definire la tabella o il foglio di lavoro contenente i dati da utilizzare nel test.

  • dataAccessMethod consente di definire le tecniche di accesso ai valori di dati nell'origine dati.

In questa sezione, saranno definite due origini dati da utilizzare in uno unit test.

Per definire le origini dati

  1. Dopo l'elemento connectionStrings, creare un elemento microsoft.visualstudio.testtools. Questa sezione è stata creata in Definizione di una sezione di configurazione personalizzata.

  2. All'interno dell'elemento microsoft.visualstudio.testtools, creare un elemento dataSources.

  3. All'interno dell'elemento dataSources, creare due elementi add.

  4. Nel primo elemento add, creare i seguenti attributi e valori per un'origine dati Microsoft Access:

Attributo

Values

name

"MyJetDataSource"

connectionString

"MyJetConn"

dataTableName

"MyDataTable"

dataAccessMethod

"Sequential"

Nel secondo elemento add, creare i seguenti attributi e valori per un'origine dati Microsoft Excel:

Name

"MyExcelDataSource"

connectionString

"MyExcelConn"

dataTableName

"Sheet1$"

dataAccessMethod

"Sequential"

L'elemento microsoft.visualstudio.testtools è simile al seguente:

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

Il fine app.config finale è simile al seguente:

<?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.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
        <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xls;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>

Creazione di unit test utilizzando le origini dati definite in app.config

Una volta definito il file app.config, sarà necessario creare uno unit test che utilizzi i dati che si trovano nelle origini dati definite nel file app.config. In questa sezione, saranno eseguite le seguenti operazioni:

  • Creazione di origini dati trovate nel file app.config.

  • Utilizzo di origini dati in due metodi di test in cui vengono confrontati i valori in ciascuna origine dati.

Per creare un'origine dati Microsoft Access

  1. Creare un database Microsoft Access denominato testdatasource.mdb.

  2. Creare una tabella a cui assegnare il nome MyDataTable in testdatasource.mdb.

  3. Creare due campi in MyDataTable denominati Arg1 e Arg2 utilizzando il tipo di dati Number.

  4. Aggiungere cinque entità a MyDataTable con i seguenti valori per Arg1 e Arg2, rispettivamente: (10,50), (3,2), (6,0), (0,8) e (12312,1000).

  5. Salvare e chiudere il database.

  6. Cambiare la stringa di connessione in modo che indichi l'ubicazione del database. Cambiare il valore di Data Source in modo che riporti l'ubicazione del database.

Per creare un'origine dati Microsoft Excel

  1. Creare un foglio di lavoro Microsoft Excel denominato data.xls.

  2. Creare un foglio denominato Sheet1 se non esiste già in data.xls.

  3. Creare due intestazioni di colonna a cui assegnare i nomi Val1 e Val2 in Sheet1.

  4. Aggiungere cinque entità a Sheet1 con i seguenti valori per Val1 e Val2, rispettivamente: (1,1), (2,2), (3,3), (4,4) e (5,0).

  5. Salvare e chiudere il foglio di lavoro.

  6. Cambiare la stringa di connessione in modo che indichi l'ubicazione del foglio di lavoro. Cambiare il valore di dbq in modo che riporti l'ubicazione del foglio di lavoro.

Per creare uno unit test utilizzando le origini dati app.config

  1. Aggiungere uno unit test al progetto del test.

    Per ulteriori informazioni, vedere Procedura: modificare unit test.

  2. Sostituire il contenuto generato automaticamente dello unit test con il seguente codice:

    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.mdb")]
            [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.xls")]
            [DataSource("MyExcelDataSource")]
            public void MyTestMethod2()
            {
                Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]);
            }
        }
    }
    
  3. Esaminare gli attributi DataSource. Prendere nota dei nomi delle impostazioni nel file app.config.

  4. Compilare la soluzione ed eseguire i test MyTestMethod e MyTestMethod2 .

Nota importante:

Distribuire gli elementi come origini dati in modo che siano accessibili ai test nella directory di distribuzione. Per ulteriori informazioni, vedere Distribuzione dei test.

Vedere anche

Attività

Procedura: creare un progetto di test

Procedura: modificare unit test

Procedura: configurare unit test basati su dati

Concetti

Codifica di unit test basati sui dati

Risoluzione dei problemi relativi a unit test basati su dati

Altre risorse

Utilizzo di unit test

Procedura: generare unit test

Distribuzione dei test