Voici 3 bonnes raisons à ça. En résumé:
Certaines situations peuvent préfèrent reporter la configuration d'appareils de test aussi longtemps que possible, juste avant que le cas de test s'exécute.
Certains des cas de test peut être partie d'un test de profondeur de cas hiérarchie d'héritage. Il peut être préférable de reporter la configuration d'appareils de test jusqu'à ce que la hiérarchie des constructeurs est terminé.
Vous obtenez de meilleurs diagnostics si le code de programme d'installation échoue dans setUp() plutôt que si elle échoue dans le constructeur.
1. Reporter la configuration de luminaires jusqu'à ce que juste avant de cas de test
Conception pour la facilité d'utilisation
http://www.artima.com/weblogs/viewpost.jsp?thread=70189
... Et comme Elliotte Rusty Harold le mettre, si vous allez créer une nouvelle instance cas de test pour chaque méthode de test, "pourquoi diable s'embêter avec une méthode setUp ()?" Vous ne pouvez utiliser que les cas de test constructeur.
J'ai entendu parler de Bruce Eckel remarquer qu'il existe une différence subtile entre la création de votre appareil dans setUp() rapport de la créer dans le cas de test constructeur. JUnit crée tous les cas de test instances à l'avant, et ensuite, pour chaque instance, les appels setup(), la méthode d'essai, et tearDown(). En d'autres termes, la subtile différence est que les constructeurs sont tous invoquée dans le lot, tandis que la méthode setUp() est appelée juste avant chaque méthode de test. Mais cela ne semble pas être utile une différence dans la pratique.
2. Reporter la configuration de luminaires jusqu'à ce que tous les cas de test sont instanciés
ETutorial Java Programmation Extrême - 4.6 montage et le démontage de
http://etutorials.org/Programming/Java+extreme+programming/Chapter+4.+JUnit/4.6+Set+Up+and+Tear+Down/
Vous demandez peut-être pourquoi vous devriez écrire une méthode setUp( ) au lieu de simplement l'initialisation des champs dans un cas de test du constructeur. Après tout, depuis qu'une nouvelle instance de la situation de test est créé pour chacun de ses méthodes de test, le constructeur est toujours appelée avant setUp( ). Dans une grande majorité des cas, vous pouvez utiliser le constructeur au lieu de setUp( ) sans effets secondaires.
Dans le cas où votre cas de test est la partie plus d'une hiérarchie d'héritage, vous pouvez reporter l'initialisation de l'objet jusqu'à ce que les instances de la dérivée [test] les classes sont entièrement construits. C'est une bonne raison technique que vous pouvez utiliser setUp( ) au lieu d'un constructeur pour l'initialisation. À l'aide de setUp( ) et tearDown( ) est aussi bien à des fins de documentation, tout simplement parce qu'il peut rendre le code plus facile à lire.
3. Améliorer les outils de diagnostic en cas d'échec de l'installation
JUnit meilleures pratiques (JavaWorld)
http://www.javaworld.com/jw-12-2000/jw-1221-junit.html
La configuration d'un cas de test dans le constructeur n'est pas une bonne idée. ...
Imaginez [dans le code où l'installation est faite dans le cas du test constructeur] que lors de l'exécution du programme d'installation, le code d'installation déclenche une exception IllegalStateException. En réponse, JUnit jeter un AssertionFailedError, indiquant que le cas de test ne peut pas être instancié. ...
Cette trace de la pile [de une exception dans le code de configuration dans le cas du test constructeur] prouve assez peu; il indique seulement que le cas de test ne peut pas être instancié.
Au lieu de mettre les données dans le constructeur, effectuer l'installation d'essai en remplaçant setUp(). Toute exception jeté dans le setUp() est signalé correctement. ...
Cette trace de la pile [de une exception dans la méthode setUp() à la place du cas de test constructeur] est beaucoup plus instructive; elle montre exception a été levée (IllegalStateException) et à partir d'où. Qui le rend beaucoup plus facile à expliquer la configuration de test est un échec.