Que vérifiez-vous? Je crois que vous testez que le chemin de gestion des erreurs pour l'appel à new Cplex() est correct.
public CplexServices()
{
try
{
_cplex = new Cplex();
}
catch
{
throw new Exception("Path or license file is wrong");
}
}
Vous n'êtes pas testng nouveau lui-même Cplex(), qu'il jette des exceptions lorsque le fichier de licence est manquant plutôt, vous testez que si il jette des exceptions que vous faites la bonne chose. Dans ce cas, c'est si trivialement correct que je ne m'en soucierais probablement pas trop. Cependant, si cela était plutôt plus complexe, un traitement de récupération sérieux à faire par exemple, alors nous préférerions de beaucoup être en mesure de tester cela.
Une approche, passer dans une usine.
public CplexServices(CplexFactory myFactory)
{
try
{
_cplex = myFactory.makeCplex();
}
catch
{
throw new Exception("Path or license file is wrong");
}
}
maintenant dans vos tests, vous pouvez passer une usine qui peut articficially jeter l'exception déclenchant le chemin que vous souhaitez tester. Cela laisse toujours la question de savoir comment tester le constructeur Cplex() lui-même. On peut dire que ce n'est pas votre problème, les auteurs devraient avoir leurs propres tests unitaires.
Je ne suis pas en train de tester si le nouveau Cplex() fonctionne correctement, je voulais juste tester si il lance l'exception correcte quand le chemin/licence est faux. Lorsque "new Cplex" échoue sur notre serveur de travail, il échoue lamentablement sans aucun message d'erreur. Je viens d'ajouter le code d'exception de lancement pour que le chemin suivant soit erroné. Une pauvre âme n'aurait pas besoin de passer une heure pour découvrir qu'elle échouait à cause d'un mauvais chemin ou d'un fichier de licence. Puis j'ai commencé à penser que s'il y avait moyen de tester cette exception correcte est lancée. Ensuite, vous êtes arrivés avec de bonnes idées. Merci... – derdo