2008-11-25 8 views
1

Si j'ai le code comme ceci:Comment tester une unité .NET ConfigurationSection manquant

 public XALServiceConfiguration CreateInstance() 
     { 
      var config = ConfigurationManager.GetSection(ConfigurationSectionName) as XALServiceConfiguration; 
      if (config == null) 
       throw new ConfigurationErrorsException("Configuration element 'xalService' was not found or is not of correct type."); 
      return config; 
     } 

Comment puis-je vérifier que l'exception est levée si la section est manquante dans le fichier de configuration? Pour les autres tests, la section de configuration doit être dans le fichier de configuration, donc je ne peux pas le retirer du fichier. J'utilise la structure de test de l'unité Visual Studio 2008.

Répondre

2

Je pense que les autres réponses à ce jour ont manqué le point de votre question, ce qui est de savoir comment provoquer la

En utilisant une technique statique comme celle-ci, vous ne pouvez pas facilement le faire - vous devriez avoir un moyen d'injecter la configuration particulière dans votre test. Je semble me rappeler que la gestion de la configuration .NET n'est pas particulièrement adaptée à cela, mais je pense que peut être fait. Je n'ai pas accès MSDN facile maintenant, mais essayez de trouver un moyen de charger une instance d'une configuration au lieu d'y accéder simplement avec des méthodes statiques. Je peux me tromper - il n'y a peut-être aucun moyen de le faire.

Ne vous inquiétez pas trop de 100% de couverture - parfois il y a des conditions qui sont infaisables pour tester, malheureusement :(

0

Vous pourriez juste attraper l'exception dans une déclaration try catch et faire un Assert dans le crochet.

1

Juste pour faire la réponse de Slace un peu plus clair, il ressemblerait à ceci:

try { 
    XALServiceConfiguration config = CreateInstance(); 
} catch (ConfigurationErrorsException cee) { 
    Assert.Fail("Could not create XALServiceConfiguration: " + e.Message); 
} 

Ce n'est pas grande (que vous ne testez pas explicitement la situation null Si vous voulez aller à cette étape,. vous pourriez avoir à créer votre propre chargeur de config, puis vérifier que contre une configuration différente avec une section manquante connue.

2

Vous pouvez exécuter le cas de test dans un domaine d'application séparée Pour ce que vous pouvez spécifier le. fichier de configuration à utiliser, ou même spécifier le fichier de configuration comme « octets » (voir AppDomainSetup Structure)

+0

de Nice. Il est une chose assez pénible à faire (et pour test unique je ne serais probablement pas déranger) mais +1 pour ex en plaçant comment cela * peut * être fait :) –

Questions connexes