Quelle est la meilleure façon de tester une fonction qui provoque une erreur? Ou tester une fonction qui est assez à l'abri de l'échec?Test d'une fonction qui déclenche une erreur
Par exemple; J'ai une classe de port d'achèvement d'E/S qui jette dans le constructeur s'il ne peut pas initialiser le port correctement. Cela utilise la fonction Win32 de CreateIoCompletionPort dans la liste initialiser. Si le handle n'est pas défini correctement (valeur non nulle), le constructeur lève une exception. Je n'ai jamais vu cette fonction échouer.
Je suis assez certain que ce (et d'autres fonctions comme dans mon code) s'ils ne se comporteront correctement, le code est 50 lignes longues, y compris l'espace blanc, donc mes questions sont
a) est-il b) et s'il vaut la peine de tester, comment?
c) Les classes d'emballage simples devraient-elles être soumises à des tests unitaires? Pour b) J'ai pensé à redéfinir CreateIoCompletionPort et à passer les valeurs à travers. Dans le test unitaire le remplacer et l'amener à retourner 0 quand une certaine valeur est transmise. Cependant, puisque cela est utilisé dans le constructeur, alors cela doit être statique. Cela semble-t-il valide ou non?