Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Se il progetto di test ha già un file app.config, passare a Definire una sezione di configurazione personalizzata.
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.
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
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.
All'interno dell'elemento configSections, creare un elemento sezione.
Nella sezione elemento aggiungere un attributo denominato
name
e assegnargli un valoremicrosoft.visualstudio.testtools
. Aggiungere un altro attributo denominatotype
e assegnargli un valoreMicrosoft.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
Dopo l'elemento configSections, creare un elemento connectionStrings.
All'interno dell'elemento connectionStrings, creare due elementi add.
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
Dopo l'elemento connectionStrings, creare un elemento microsoft.visualstudio.testtools. Questa sezione è stata creata in Definire una sezione di configurazione personalizzata.
Nell'elemento microsoft.visualstudio.testtools, creare un elemento dataSources.
All'interno dell'elemento dataSources, creare due elementi add.
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
Creare un database di Microsoft Access denominato testdatasource.accdb.
Creare una tabella e denominarla
MyDataTable
in testdatasource.accdb.Creare due campi in
MyDataTable
denominatiArg1
eArg2
usando il tipo di datiNumber
.Aggiungere cinque entità a
MyDataTable
con i valori seguenti perArg1
eArg2
rispettivamente: (10.50), (3.2), (6.0), (0,8) e (12312.1000).Salvare e chiudere il database.
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
Creare un foglio di calcolo di Microsoft Excel denominato data.xlsx.
Creare un foglio denominato
Sheet1
se non esiste già in data.xlsx.Creare due intestazioni di colonna e denominarle
Val1
eVal2
inSheet1
.Aggiungere cinque entità a
Sheet1
con i valori seguenti perVal1
eVal2
rispettivamente: (1,1), (2,2), (3,3), (4,4) e (5,0).Salvare e chiudere il foglio di calcolo.
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
Aggiungi un test unitario al progetto di test.
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"]); } } }
Esaminare gli attributi DataSource. Nota i nomi delle impostazioni dal file di app.config.
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.