Maison >développement back-end >C++ >Comment spécifier un chemin relatif pour l'emplacement de la base de données SQL Express dans les tests unitaires C# ?

Comment spécifier un chemin relatif pour l'emplacement de la base de données SQL Express dans les tests unitaires C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 06:21:39895parcourir

How to Specify a Relative Path for SQL Express Database Location in C# Unit Tests?

Détermination de l'emplacement de la base de données SQL Express à l'aide d'un chemin relatif dans la configuration de l'application

Dans un projet de test unitaire pour C#, où les bases de données SQL Express sont utilisées, il devient nécessaire de définir une chaîne de connexion qui permet un chemin relatif à l'emplacement de l'application. Ceci est plus préférable que de spécifier explicitement le chemin absolu du fichier de base de données, tel que :

AttachDbFilename=C:\blah\blah\blah\yea\yea\yea\MyApplication\Databases\MyUnitTestDB.mdf

Au départ, il a été envisagé si |DataDirectory| pourraient être employés à cet effet. Cependant, il a été découvert que cela s'applique principalement aux applications Web et pourrait ne pas correspondre à la configuration souhaitée pour contrôler l'emplacement de la base de données dans le fichier de configuration de l'application.

Pour surmonter ce défi, une approche hybride a été mise en œuvre. , comme indiqué dans la solution fournie :

fichier app.config:

<add name="MyConnectionString" connectionString="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Database=MyDatabaseForTesting;Trusted_Connection=Yes;" />

Test unitaire class:

[TestInitialize]
public void TestInitialize()
{
    AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Databases"));

    // rest of initialize implementation ...
}

Cette approche combine la définition du chemin relatif dans la chaîne de connexion avec l'affectation de la propriété DataDirectory dans la classe de test unitaire, garantissant que le fichier de base de données est situé par rapport à l'exécutable de l'application. lors des tests unitaires, tout en permettant l'utilisation d'une base de données SQL hébergée dans des environnements de production.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn