Per anni abbiamo utilizzato il seguente codice per configurare i database in una classe base per i nostri test funzionali per il nostro DAL, e questo ha funzionato molto bene per noi.È possibile utilizzare un progetto di database di Visual Studio in un progetto di test dell'unità per configurare un database vuoto per un test funzionale?
/// <summary>
/// Initializes the test class by creating the integration database.
/// </summary>
[TestInitialize]
public virtual void TestInitialize()
{
DataContext = new DataContext(ConnectionString);
CleanupPreviousTestRunDatabases();
if (DataContext.Database.Exists())
{
DataContext.Database.Delete();
}
DataContext.Database.Create();
DataContext.Database.ExecuteSqlCommand(String.Format(Strings.CreateLoginCommand, DatabaseUserName, DatabasePassword));
DataContext.Database.ExecuteSqlCommand(String.Format("CREATE USER {0} FOR LOGIN {0}", DatabaseUserName));
DataContext.Database.ExecuteSqlCommand(String.Format("EXEC sp_addrolemember 'db_owner', '{0}'", DatabaseUserName));
}
Tuttavia, utilizzando Entity Framework non si configurazione di tutti i componenti di un database e vorremmo prendere discrepanze tra il nostro modello EF DAL e il database effettivo.
Utilizziamo gli strumenti SSDT/Visual Studio Database Project per tutto il nostro lavoro di database e so che è possibile scrivere test di unità SQL e in quei test di unità SQL, ho visto la possibilità di impostare e creare un database basato sul progetto stesso del database. Questo è quello che mi piacerebbe fare, ma dalle nostre altre librerie di test funzionali.
posso riferimento alle librerie e scrivere parte del codice di configurazione, ma quello che sto cercando è:
a) Come faccio a fornire quale progetto di database da utilizzare per la distribuzione?
b) Come specificare una stringa di connessione nel codice piuttosto che un file app.config, ad esempio l'utilizzo di localdb con un database denominato dinamicamente?
namespace Product.Data.Tests
{
using Microsoft.Data.Tools.Schema.Sql.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class FunctionalTest
{
[TestInitialize]
public virtual void TestInitialize()
{
SqlDatabaseTestClass.TestService.DeployDatabaseProject();
SqlDatabaseTestClass.TestService.GenerateData();
}
}
}
L'app.config in un progetto di test SQL unità non contiene alcun riferimento di nuovo al progetto di database originale utilizzato per crearlo, e decompilazione parte del codice di prova e vedere come funziona, I don' vedere qualsiasi indicazione Suppone che ci sia un solo progetto di database nella soluzione?
Grazie per la guida e i collegamenti ipertestuali. Sono stato in grado di fare questo lavoro. –