J'ai une classe pour crypter la connectionString.C# pourquoi le test unitaire a-t-il ce comportement étrange?
public class SKM
{
private string connStrName = "AndeDBEntities";
internal void encryptConnStr()
{
if(isConnStrEncrypted())
return;
...
}
private bool isConnStrEncrypted()
{
bool status = false;
// Open app.config of executable.
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Get the connection string from the app.config file.
string connStr = config.ConnectionStrings.ConnectionStrings[connStrName].ConnectionString;
status = !(connStr.Contains("provider"));
Log.logItem(LogType.DebugDevelopment, "isConnStrEncrypted", "SKM::isConnStrEncrypted()", "isConnStrEncrypted=" + status);
return status;
}
}
Le code ci-dessus fonctionne correctement dans mon application. Mais pas dans mon projet de test unitaire.
Dans mon projet de test unitaire, je teste la méthode encryptConnStr()
. il appellera la méthode isConnStrEncrypted()
. Puis exception (pointeur NULL) sera lancée sur cette ligne:
string connStr = config.ConnectionStrings.ConnectionStrings[connStrName].ConnectionString;
Je dois utiliser l'index comme celui-ci pour passer le test unitaire:
string connStr = config.ConnectionStrings.ConnectionStrings[0].ConnectionString;
Je me souviens qu'il a travaillé il y a quelques jours au moment J'ai ajouté ci-dessus test unitaire. Mais maintenant, il me donne une erreur. Le test unitaire n'est pas encore intégré à notre construction automatique quotidienne. Nous avons seulement une connectionStr. Cela fonctionne avec le produit mais pas avec le test unitaire. Je ne sais pas pourquoi. Quelqu'un peut-il m'expliquer?