2010-10-05 5 views
1

Mon test JUnit est comme suit:comment gérer l'exception avec JUnit4?

public class Toto { 

    @BeforeClass 
    public static void initTest1() { 
     try { 
      openAppli(); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @Test 
    public void test1() { 
     try{ 
      //do some actions 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @AfterClass 
    public static void AfterTest1() { 
     CloseAppli(); 
    } 
} 

Je voudrais savoir:

  1. est-il de la manière attendue d'écrire un test JUnit?
  2. Dois-je appeler essayer/attraper ou lancer?
  3. Puis-je appeler les mêmes BeforeTest1() et AfterTest1() dans une autre classe de test?
+0

Voulez-vous appeler 'BeforeTest1()' et 'AfterTest1()' d'autres tests? – DerMike

+0

oui, si j'ai un autre test2, puis-je appeler les mêmes méthodes dans @beforeCalss et @afterClass dans test1, comme je le veux avant de faire un test, d'abord ouvrir l'appli et une fois le test terminé, fermez l'appli. – laura

+0

est-ce possible? – laura

Répondre

2

En général, vous ne devriez pas intercepter la classe de base Exception. (Ceci est parfois connu sous le nom de "gestion des exceptions Pokemon" et si vous ne savez pas exactement pourquoi vous devez le faire, c'est une mauvaise pratique.) Vos tests unitaires devraient toujours tester un type d'exception spécifique si vous prévoyez une exception sinon ils peuvent passer quand ils ne devraient pas. Rappelez-vous qu'une exception signifie (ou devrait signifier) ​​que votre méthode ne peut pas faire ce que son nom l'indique. Dans votre code lui-même, vous ne devriez pas attraper une exception, sauf si vous êtes certain que vous savez exactement ce que vous devez faire pour en récupérer.

1

Si vous prévoyez une exception à être jeté, vous pouvez annoter votre test avec

@Test(expected=Exception.class) 

pour quelque exception que vous attendez. Sinon, vous pouvez déclarer votre test pour lancer un Exception.

+0

merci, avez-vous une réponse pour les autres points s'il vous plaît? – laura