Question

Une nouvelle instance (ou différente) de l'objet TestCase est-elle utilisée pour exécuter chaque méthode de test dans un scénario de test JUnit? Ou une instance est réutilisée pour tous les tests?

public class MyTest extends TestCase {
  public void testSomething() { ... }
  public void testSomethingElse() { ... }
}

Lors de l'exécution de ce test, combien d'instances de la classe MyTest sont créées?

Si possible, fournissez un lien vers un document ou un code source sur lequel je peux vérifier le comportement.

Était-ce utile?

La solution

Je n'ai pas trouvé de réponse claire à votre question dans la documentation JUnit, mais l'intention, comme l'a écrit anjanb, est que chaque test soit indépendant des autres, de sorte qu'une nouvelle instance TestCase puisse être créée pour chaque test. courir.

Si vous avez une configuration de test coûteuse (& em; appareils ") que vous souhaitez partager avec tous les scénarios de test d'une classe de test, vous pouvez utiliser la @BeforeClass annotation sur une méthode statique pour atteindre ce résultat: http: //junit.sourceforge .net / javadoc_40 / org / junit / BeforeClass.html . Notez cependant qu'une nouvelle instance peut toujours être créée pour chaque test, mais cela n'affectera pas les données statiques que votre méthode @BeforeTest a initialisées.

Autres conseils

Oui, une instance distincte est créée.

Lors de l'exécution de ce test, 2 instances de MyTest sont créées.

Si vous souhaitez un comportement différent, une option consiste à utiliser un outil similaire appelé TestNG ( http://testng.org / doc / ).

Il y a une instance pour chaque série de tests. Essayez

public class MyTest extends TestCase {
  public MyTest() { System.out.println("MyTest Constructor");
  public void setUp() { System.out.println("MyTest setUp");
  public void tearDown() { System.out.println("MyTest tearDown");
  public void testSomething() { System.out.println("MyTest testSomething");
  public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}

Le code source (y compris celui des versions plus récentes - Junit 3 et votre exemple, par exemple) se trouve sur http: // www. junit.org

Si vous vous posez cette question parce que vous êtes préoccupé par l'initialisation et la réinitialisation des données dans votre constructeur, sachez que la méthode recommandée pour initialiser les données de votre scénario de test consiste à définir exclusivement les commandes setUp () et tearDown ().

Oui, définitivement. J'ai constaté que les données stockées dans les variables d'instance étaient inaccessibles entre les tests en raison de cette conception.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top