Risoluzione dei problemi relativi a unit test basati su dati
Aggiornamento: novembre 2007
Durante l'esecuzione di unit test basati su dati, potrebbero verificarsi problemi di connessione, autenticazione, distribuzione o di altro tipo. Utilizzare le informazioni riportate nelle sezioni seguenti per risolvere tali problemi.
Impossibile connettere il test all'origine dati
Assicurarsi che l'origine dati sia accessibile dall'account utente utilizzato per eseguire i test. A tale scopo, è necessario sapere quale account utente viene utilizzato per eseguire i test. Ad esempio, quando si eseguono i test in remoto, i test vengono eseguiti dall'account utente dell'agente.
Problemi relativi a ASP.NET
I test ASP.NET eseguiti in un server Web IIS vengono eseguiti dall'account 'aspnet'. Pertanto, assicurarsi che l'origine dati sia accessibile dall'utente ASP.NET.
Inoltre, se si utilizza il 'DSN ODBC Excel', è necessario creare il 'DSN di sistema'. Il DSN di sistema è disponibile per tutti gli utenti. Per creare i DSN, utilizzare Amministratore origine dati ODBC. A tale scopo, fare clic sul pulsante Start, scegliere Pannello di controllo, quindi Strumenti di amministrazione e infine Origini dati.
Distribuzione di file di origine dati
Se si utilizza un file di origine dati, ad esempio un foglio di lavoro di Microsoft Excel o un file CSV, assicurarsi che sia disponibile durante l'esecuzione del test. A tale scopo, è possibile aggiungere il file di origine dati come elemento di distribuzione utilizzando la finestra di dialogo di configurazione di esecuzione dei test o come elemento di distribuzione per test. Specificare inoltre un percorso relativo per il file. Per ulteriori informazioni sulle configurazioni di esecuzione dei test, vedere Configurazione dell'esecuzione del test.
Problemi di autenticazione
Utilizzare l'autenticazione di Windows laddove possibile.
Stringhe di connessione
Anche se la finestra di dialogo Connessione dati è efficace per la connessione a Microsoft SQL Server e Oracle, non rappresenta la scelta ideale quando è necessario stabilire una connessione alle origini dati di file. Per tali origini, è possibile specificare una stringa di connessione e quindi selezionare il nome di una tabella dati da una casella di riepilogo a discesa nella finestra Proprietà.
La tabella riportata di seguito contiene esempi di nomi di provider e stringhe di connessione per la maggior parte dei provider di dati.
Origine dati |
Nome provider |
Stringa di connessione |
MS SQL Server (provider .NET) |
System.Data.SqlClient |
Data Source=SqlServerName;InitialCatalog=MyDatabaseName;Integrated Security=True;Connect Timeout=30;User Instance=True |
MS SQL Express Server (provider .NET) |
System.Data.SqlClient |
Data Source=.\SQLEXPRESS;AttachDbFilename=C:\ \Test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True |
MS SQL Server (OLEDB, provider MDAC) |
System.Data.OleDb |
Provider=SQLOLEDB;Data Source= SqlServerName;Integrated Security=SSPI;Initial Catalog=MyDatabaseName |
MS SQL Server (OLEDB, provider client nativo) |
System.Data.OleDb |
Provider=SQLNCLI;Data Source= MySqlServerComputerName;Integrated Security=SSPI;Initial Catalog= MyDatabaseName |
MS SQL (ODBC) |
System.Data.Odbc |
Driver={SQL Server};Server=SqlServerName;Database=DatabaseName;Trusted_Connection=yes Driver={SQL Server};Server=SqlServerName;Database=DatabaseName;Uid=UserName;Pwd=<password> |
Oracle (provider .NET) |
System.Data.OracleClient |
Data Source=OracleServerName;Persist Security Info=True;User ID=scott;Password=<password>;Unicode=True |
Oracle (OLEDB, provider Oracle) |
System.Data.OleDb |
Provider=OraOLEDB.Oracle;Data Source=OracleServerName;Persist Security Info=True;OSAuthent=1 Provider=OraOLEDB.Oracle;Data Source=OracleServerName;Persist Security Info=True;User ID=scott;Password=<password> |
Oracle (OLEDB, provider Microsoft) |
System.Data.OleDb |
Provider=MSDAORA;Data Source= OracleServerName;Persist Security Info=True; User ID=scott;Password=<password> |
Oracle (ODBC) |
System.Data.Odbc |
Driver={Microsoft ODBC for Oracle};Server=OracleServerName;Uid=scott;Pwd=<password> |
Excel (OLEDB) |
System.Data.OleDb |
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ Test.xls;Persist Security Info=False;Extended Properties="Excel 8.0" |
Excel (ODBC, driver MS Excel) |
System.Data.Odbc |
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\\Test.xls;DefaultDir=C:\ Suggerimento Per la tabella Sheet1, utilizzare Sheet1$ come nome della tabella dati. |
Excel (ODBC, Dsn) |
System.Data.Odbc |
Dsn=Excel Files;dbq=C:\Test.xls;defaultdir=C:\;driverid=790;maxbuffersize=2048;pagetimeout=5 Suggerimento Quando si eseguono i test in ASP.NET, è consigliabile utilizzare il DSN di sistema anziché il DSN utente. |
CSV/file di testo (OLEDB) |
System.Data.OleDb |
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties="text;HDR=Yes;FMT=Delimited” Suggerimento Per il file test.csv, utilizzare test#csv come nome della tabella. Nota HDR=Yes significa che la prima riga contiene nomi di colonna, non dati effettivi. |
CSV/file di testo (ODBC) |
System.Data.Obdc |
Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\;Extensions=asc,csv,tab,txt |
ODBC tramite DSN |
System.Data.Obdc |
Dsn=MyDsn;Uid=UserName;Pwd=<password> FILEDSN=C:\MyDsn.dsn;Uid=UserName;Pwd=<password> |
Specifica di un'origine dati distinta dal codice compilato
È possibile utilizzare il file App.config per specificare un'origine dati per il test. In questo modo è possibile modificare gli attributi dell'origine dati, ad esempio il server, il nome di tabella e così via, senza ricompilare l'assembly di test. Quando si esegue il test dalla riga di comando, assicurarsi che il file App.config si trovi nella stessa directory dell'assembly di test.
Esempio:
[TestMethod][DataSource("MyDataSource")]
[DeploymentItem("MyDataSource.csv")]public void MyTest() {}
Contenuto del file App.config:
<configSections><section name="microsoft.visualstudio.qualitytools" type="Microsoft.VisualStudio.QualityTools.UnitTesting.Framework.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></configSections><microsoft.visualstudio.qualitytools><dataSources><add name="MyDataSource" connectionString="MyConnectionString" dataTableName="ChildSearchCriteria" dataAccessMethod="Sequential" /></dataSources></microsoft.visualstudio.qualitytools>
![]() |
---|
La proprietà Run unit tests in application domain determina se ogni assembly di unit test verrà eseguito in un dominio applicazione separato. L'impostazione predefinita di questa proprietà è True. Se gli unit test non richiedono un dominio applicazione separato o un file app.config per funzionare correttamente, gli unit test potrebbero essere eseguiti più velocemente impostando il valore di questa proprietà a False. |
Dopo l'inizializzazione del database in TestInitialize, le modifiche non vengono visualizzate
Quando il test basato su dati viene eseguito, l'adattatore di unit test si connette alla tabella dati e compila un elenco di righe di dati. Quindi, per ogni riga esegue i metodi TestInitialize, TestMethod e TestCleanup. Se si modificano le righe di dati in TestInitialize, l'adattatore di unit test non visualizzerà tali modifiche. Pertanto, se si desidera modificare la tabella dati per un test basato su dati, eseguire questa operazione nel metodo ClassInitialize o AssemblyInitialize.
Unit test superato ma non contiene risultati interni
Questo risultato indica che la tabella dati non contiene righe.
Altri problemi
Se il problema non è elencato in questa sezione, è possibile provare a cercare risposte o inviare domande a forum di supporto e ai forum specifici di Visual Studio Team Edition for Developers e Visual Studio Team System Test Edition.
Vedere anche
Attività
Procedura: configurare unit test basati su dati