JUnit: nouvelle instance avant d'invoquer chaque @la méthode d'Essai. Quels sont les avantages?

Actuellement, je suis à la lecture de "JUnit dans l'action" livre. Dans ce livre, j'ai trouvé le texte ci-dessous:

JUnit crée une nouvelle instance de la classe de test avant de l'appeler à chaque
@La méthode d'essai. Cela permet de fournir de l'indépendance entre les méthodes de test et de
évite involontaire des effets secondaires dans le code de test. Parce que chaque test
la méthode s'exécute sur un nouveau test de l'instance de classe, nous ne pouvons pas réutiliser exemple
les valeurs de la variable à travers les méthodes de test.

Maintenant je ne vois pas beaucoup de point dans cette démarche:

Par exemple:

public class CalculatorTest {
    @Test
    public void testAdd_1() {
        Calculator calculator = new Calculator();
        double result = calculator.add(1, 1);
        assertEquals(2, result, 0);
    }

    @Test
    public void testAdd_2() {
        Calculator calculator = new Calculator();
        double result = calculator.add(2, 2);
        assertEquals(4, result, 0);
    }
}

Pour la classe de test CalculatorTest il n'y a pas tous les avantages.

Ok, permet d'aller payer l'attention sur un autre exemple:

public class OneTest {

    static byte count;

    public OneTest() {
        count++;
    }

    @Test
    public void test1() {
        System.out.println(count);
    }

    @Test
    public void test2() {
        System.out.println(count);
    }
}

Pour la classe de test OneTest j'ai trouvé un moyen d'utiliser la même variable de comptage pour les nombreuses méthodes d'essai...

alors, Comment voir les vrais avantages de l'approche décrite dans le livre?

  • Si vous parlez du "comte" champ de ensuite ses un champ statique. Ses une propriété de la classe, et non pas une instance spécifique. C'est pourquoi vous voyez le changement dans la valeur.
  • vous devez récupérer votre réponse (et peut-être développer un peu plus, en montrant l'exemple avec un non-champ statique).
  • premier exemple: nous n'avons aucun lien entre les méthodes de test. Dans ce cas, la création de la nouvelle instance de la classe de test pour l'exécution de chaque méthode de test - pas de sens. Un deuxième exemple: nous pouvons obtenir de "caractère non intentionnel effets secondaires" par le biais de variables statiques. :)), Où en sont les avantages?
  • L'avantage est lorsque vous utilisez des variables d'instance et les modifier à l'intérieur de l'tests.
  • C'est actuellement expliqué dans la documentation.
InformationsquelleAutor user471011 | 2012-12-23