Procedura dettagliata: utilizzo di un file di configurazione per definire un'origine dati
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 dettagliata, è necessario disporre di quanto segue:
Visual Studio Premium oppure Visual Studio Ultimate
Microsoft Access o Microsoft Excel per fornire i dati per almeno uno dei metodi di test.
Una soluzione Microsoft Visual Studio 2010 contenente un progetto di test.
Creazione del file App.config
Per aggiungere un file app.config al progetto
Se nel progetto del test è già presente un file app.config, andare alla sezione Definizione di una sezione di configurazione personalizzata.
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.
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
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.
All'interno dell'elemento configSections, creare un elemento section.
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 è analogo 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"/>
Nota
Il nome dell'assembly deve corrispondere alla build di Microsoft Visual Studio .NET Framework in uso. Impostare la versione su 9.0.0.0 se si utilizza Visual Studio .NET Framework 3.5. Se si utilizza Visual Studio .NET Framework 2.0, impostare la versione su 8.0.0.0.
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
Dopo l'elemento configSections, creare un elemento connectionStrings.
All'interno dell'elemento connectionStrings, creare due elementi add.
Nel primo elemento add, creare i seguenti attributi e valori per una connessione a un database 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 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.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" |
providerName |
"System.Data.Odbc" |
L'elemento connectionStrings è analogo 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>
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
Dopo l'elemento connectionStrings, creare un elemento microsoft.visualstudio.testtools. Questa sezione è stata creata in Definizione di una sezione di configurazione personalizzata.
All'interno dell'elemento microsoft.visualstudio.testtools, creare un elemento dataSources.
All'interno dell'elemento dataSources, creare due elementi add.
Nel primo elemento add, creare i seguenti attributi e valori per un'origine dati Microsoft Access:
Attributo |
Valori |
---|---|
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 è analogo 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.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>
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
Creare un database Microsoft Access denominato testdatasource.accdb.
Creare una tabella a cui assegnare il nome MyDataTable in testdatasource.accdb.
Creare due campi in MyDataTable denominati Arg1 e Arg2 utilizzando il tipo di dati Number.
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).
Salvare e chiudere il database.
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
Creare un foglio di lavoro Microsoft Excel denominato data.xlsx.
Creare un foglio denominato Sheet1 se non esiste già in data.xlsx.
Creare due intestazioni di colonna a cui assegnare i nomi Val1 e Val2 in Sheet1.
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).
Salvare e chiudere il foglio di lavoro.
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
Aggiungere uno unit test al progetto del test.
Per ulteriori informazioni, vedere Creazione ed esecuzione di unit test per il codice esistente.
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.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"]); } } }
Esaminare gli attributi DataSource. Prendere nota dei nomi delle impostazioni nel file app.config.
Compilare la soluzione ed eseguire i test MyTestMethod e MyTestMethod2 .
Importante |
---|
Distribuire gli elementi come origini dati in modo che siano accessibili ai test nella directory di distribuzione. |
Vedere anche
Concetti
Verifica del codice tramite unit test
Creazione ed esecuzione di unit test per il codice esistente