Condividi tramite


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

Questa procedura dettagliata illustra come usare un'origine dati definita in un file di app.config per unit test. Si apprenderà come creare un file app.config che definisce un'origine dati che può essere usata dalla classe DataSourceAttribute. Le attività presentate in questa procedura dettagliata includono quanto segue:

  • Creazione di un file app.config.

  • Definizione di una sezione di configurazione personalizzata.

  • Definizione delle stringhe di connessione.

  • Definizione delle origini dati.

  • Accesso alle origini dati tramite la classe DataSourceAttribute.

Nota

DataSourceAttribute è attualmente supportato solo in .NET Framework.

Prerequisiti

Per completare questa procedura dettagliata, è necessario:

  • Visual Studio Enterprise

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

  • Soluzione di Visual Studio che contiene un progetto di test.

Aggiungere un file app.config al progetto

  1. Se il progetto di test ha già un file app.config, passare a Definire una sezione di configurazione personalizzata.

  2. Fare clic con il pulsante destro del mouse sul progetto di test in Esplora soluzioni e quindi selezionare Aggiungi>Nuovo elemento.

    Verrà visualizzata la finestra Aggiungi nuovo elemento. Se non vengono visualizzati tutti i modelli di elemento, scegliere Mostra tutti i modellie quindi scegliere il modello di elemento.

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

Definire una sezione di configurazione personalizzata

Esaminare il file app.config. Contiene almeno la dichiarazione XML e un elemento radice.

Per aggiungere la sezione di configurazione personalizzata al file di app.config

  1. L'elemento radice di app.config deve essere l'elemento di configurazione . Creare un elemento configSections all'interno dell'elemento di configurazione . Il configSections deve essere il primo elemento nel file app.config.

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

  3. Nella sezione elemento aggiungere un attributo denominato name e assegnargli un valore microsoft.visualstudio.testtools. Aggiungere un altro attributo denominato type e assegnargli un valore Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.

L'elemento sezione dovrebbe essere simile al seguente:

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

Nota

Il nome dell'assembly deve corrispondere alla versione in uso.

Definire le 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 riutilizzabili sul provider di dati in un'applicazione. In questa sezione vengono create due stringhe di connessione che verranno usate dalle origini dati definite nella sezione Configurazione personalizzata.

Cautela

La stringa di connessione può contenere dati sensibili, ad esempio una password. La stringa di connessione viene archiviata in testo normale nel codice sorgente e nell'assembly compilato. Limitare l'accesso al codice sorgente e all'assembly per proteggere queste informazioni riservate.

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 , aggiungere l'elemento, creare gli attributi e i valori seguenti per una connessione a un database di Microsoft Access:

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

Nel secondo elemento , aggiungere l'elemento, e creare i seguenti attributi e valori per una connessione a un foglio di calcolo di Microsoft Excel.

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

L'elemento connectionStrings dovrebbe essere simile al seguente:

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

Definire le origini dati

La sezione Origini dati contiene quattro attributi usati dal motore di test per recuperare i dati da un'origine dati.

  • name definisce l'identità usata dal DataSourceAttribute per specificare l'origine dati da usare.

  • connectionString identifica la stringa di connessione creata nella sezione precedente Definisci stringhe di connessione.

  • dataTableName definisce la tabella o il foglio che contiene i dati da utilizzare nel test.

  • dataAccessMethod definisce la tecnica per l'accesso ai valori di dati nell'origine dati.

In questa sezione verranno definite due origini dati da usare 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 Definire una sezione di configurazione personalizzata.

  2. Nell'elemento microsoft.visualstudio.testtools, creare un elemento dataSources.

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

  4. Nel primo , aggiungi l'elemento e crea gli attributi e i valori seguenti per un'origine dati di Microsoft Access:

Attributo Valori
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

Nel secondo , aggiungi l'elemento, crea i seguenti attributi e valori per un'origine dati di Microsoft Excel.

Attributo Valori
Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

L'elemento microsoft.visualstudio.testtools dovrebbe essere 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 file app.config finale sarà 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.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>

Crea un test unitario che usa origini dati definite in app.config

Ora che è stato definito un file app.config, verrà creato uno unit test che usa i dati presenti nelle origini dati definite nel file di app.config. In questa sezione verranno descritti gli elementi seguenti:

  • Creare le origini dati disponibili nel file app.config.

  • Usare le fonti di dati in due metodi di prova che confrontano i valori in ciascuna fonte di dati.

Per creare un'origine dati di Microsoft Access

  1. Creare un database di Microsoft Access denominato testdatasource.accdb.

  2. Creare una tabella e denominarla MyDataTable in testdatasource.accdb.

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

  4. Aggiungere cinque entità a MyDataTable con i valori seguenti per Arg1 e Arg2rispettivamente: (10.50), (3.2), (6.0), (0,8) e (12312.1000).

  5. Salvare e chiudere il database.

  6. Modificare la stringa di connessione in modo che punti all'ubicazione del database. Modificare il valore di Data Source per indicare il percorso del database.

Per creare un'origine dati di Microsoft Excel

  1. Creare un foglio di calcolo di Microsoft Excel denominato data.xlsx.

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

  3. Creare due intestazioni di colonna e denominarle Val1 e Val2 in Sheet1.

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

  5. Salvare e chiudere il foglio di calcolo.

  6. Modificare la stringa di connessione in modo che punti al percorso del foglio di calcolo. Modificare il valore di dbq in modo da riflettere la posizione del foglio di calcolo.

Per creare un test unitario usando le origini dati app.config

  1. Aggiungi un test unitario al progetto di test.

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

    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. Esaminare gli attributi DataSource. Nota i nomi delle impostazioni dal file di app.config.

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

Importante

Distribuire elementi come ad esempio origini dati in modo che siano accessibili al test nella cartella di distribuzione.