2009-07-29 8 views
0

en double: Java: How to test methods that call System.exit()?Unité test d'un constructeur Java qui quitte l'application


J'ai un peu de mal à la conception d'un test unitaire pour une méthode qui quitte l'application en appelant system.exit(). En fait, c'est le constructeur d'une classe qui teste certaines conditions et décide de quitter l'application. C'est donc cette éventualité particulière que j'aimerais tester.

Existe-t-il un argument particulier que je pourrais utiliser, ou d'autres suggestions?

public MyClass(arg1, arg2, arg3){ 
    if(argsTestingIsOK){ 
     continue;  
    }else{ 
     System.exit(0); 
    } 
} 

Répondre

7

Au lieu de exit() -dans le constructeur, lancez un IllegalArgumentException à la place (puisque c'est ce qui se passe réellement) et laissez l'appelant gérer l'exception. Le code de l'application peut être écrit pour traiter l'exception tandis que le test JUnit peut affirmer que l'exception se produit.

+0

merci Mike, c'est une excellente idée en fait! Je vais essayer ça maintenant! – denchr

4

Ne le faites pas dans un constructeur. C'est une mauvaise idée, et c'est trompeur pour quiconque utilise votre code. La meilleure pratique est d'utiliser seulement quelque chose comme System.exit() dans une méthode principale ou dans le point d'entrée de votre application - certainement pas au milieu du code de construction de l'objet.

Questions connexes