comment créer une nouvelle base de données (everytime) avant que les tests s'exécutent à partir d'un fichier de schéma?comment créer une nouvelle base de données avant l'exécution des tests?
Répondre
Vous pouvez utiliser la classe SchemaExport dans NHibernate pour ce faire dans le code:
var schema = new SchemaExport(config);
schema.Drop(true, true);
schema.Execute(true, true, false);
'schema.Drop (true, true)' n'est pas nécessaire car Execute sera toujours supprimé avant de créer – Firo
déposer la base de données entière - ne laissez pas tomber la table par le tableau - qui ajoute trop d'entretien frais généraux
Je voulais dire programmatique :) –
J'ai utilisé les méthodes utilitaires suivantes pour exécuter des scripts SQL pour la mise en place des bases de données et des données de test dans un projet que je travaille avec de temps en temps. Il a plutôt bien fonctionné:
internal static void RunScriptFile(SqlConnection conn, string fileName)
{
long fileSize = 0;
using (FileStream stream = File.OpenRead(fileName))
{
fileSize = stream.Length;
using (StreamReader reader = new StreamReader(stream))
{
StringBuilder sb = new StringBuilder();
string line = string.Empty;
while (!reader.EndOfStream)
{
line = reader.ReadLine();
if (string.Compare(line.Trim(), "GO", StringComparison.InvariantCultureIgnoreCase) == 0)
{
RunCommand(conn, sb.ToString());
sb.Length = 0;
}
else
{
sb.AppendLine(line);
}
}
}
}
}
private static void RunCommand(SqlConnection connection, string commandString)
{
using (SqlCommand command = new SqlCommand(commandString, connection))
{
try
{
command.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Exception while executing statement: {0}", commandString));
Console.WriteLine(ex.ToString());
}
}
}
J'ai utilisé le Database Publishing Wizard pour générer des scripts SQL (et dans certains cas, elles ont été éditées pour inclure uniquement les données que je veux utiliser dans le test), et juste passer les chemins de fichiers de script dans la méthode RunScriptFile
avant les tests. La méthode analyse le fichier script et exécute chaque partie séparée par une ligne GO
séparément (j'ai trouvé que cela a grandement aidé à résoudre les erreurs qui se sont produites lors de l'exécution des scripts SQL).
Cela fait un moment que j'ai écrit le code, mais je pense qu'il faut que le fichier script se termine par une ligne GO
pour que la dernière partie soit exécutée.
Jetez un oeil à ces postes.
Ayende Rahien - nhibernate-unit-testing
Scott Muc - unit-testing-domain-persistence-with-ndbunit-nhibernate-and-sqlite
je les ai trouvé très utile et, fondamentalement, ils étendent l'exemple par Mike Glenn
-je utiliser Proteus (Test Unit Utilitaire), disponible sur Google code ici:
http://code.google.com/p/proteusproject/
Vous créez un ensemble de données. Chaque fois, vous exécutez un test unitaire, les données actuelles sont sauvegardées, l'ensemble de données est chargé, puis vous utilisez tout le temps le même ensemble de données pour effectuer vos tests. À la fin, les données d'origine sont restaurées.
Très puissant
HTH
- 1. Vérification des droits d'utilisateur avant de tenter de CRÉER UNE BASE DE DONNÉES
- 2. Comment créer les migrations pour une base de données existante?
- 3. créer des données initiales pour les tests pilotés par hibernation
- 4. Tests d'intégration de base de données
- 5. créer une base de données d'adresses
- 6. Comment créer une couche de base de données appropriée?
- 7. Créer une base de données dans QT
- 8. Comment exécuter des tests d'intégration Rails sans supprimer le contenu de la base de données?
- 9. Création d'une nouvelle base de données rrd basée sur une base existante
- 10. Comment créer une nouvelle base de données à partir d'un script de schéma enregistré dans SQL Server 2005?
- 11. Créer une base de données avec un emplacement de données spécifique dans MySQL pour une base de données
- 12. Comment stocker des données modifiées dans une base de données?
- 13. Tests de la base de données après intégration (Selenium)
- 14. Comment créer une procédure stockée pour créer une base de données
- 15. Comment obtenir des données d'une base de données vers une autre base de données?
- 16. Créer une base de données à partir du projet db
- 17. Créer une DLL: Comment utiliser une DLL pour créer une nouvelle DLL?
- 18. Utilisation des déclencheurs MySQL pour créer une base de données à l'insertion
- 19. Création de tests JUnit pour les éléments de base de données avec des clés générées automatiquement
- 20. comment publier des données dans une base de données de site dans une application iphone?
- 21. Comment créer une nouvelle instance de Sql Server 2005
- 22. Comment créer et stocker des champs personnalisés définis par l'utilisateur dans une base de données SQL?
- 23. Conception d'application pour le traitement des données avant la base de données
- 24. XSLT créer une nouvelle balise HTML
- 25. Créer une nouvelle page dans Webtop
- 26. Comment éviter une condition de concurrence de base de données lors de l'incrémentation PK de la nouvelle ligne
- 27. Une manière simple de créer une ERD pour une revue de conception de base de données
- 28. Créer une nouvelle instance ou simplement définir des variables internes
- 29. Concevoir une base de données
- 30. Comment puis-je créer une nouvelle instance d'une classe?
Avec ou sans NHibernate? Vous l'avez tagué avec NHibernate, mais ne le mentionnez pas dans la question – Paco
oui si possible –