2010-12-01 5 views

Répondre

3

Si vous ne voulez pas utiliser d'autres bibliothèques, vous devez faire beaucoup de travail vous-même. Par exemple, supposons que vous avez une classe avec une fonction que vous voulez tester:

class Foo { 
    public int bar(int input); 
} 

Vous pouvez maintenant écrire une classe de test:

class TestFoo { 
    public void testBarPositive() { 
     Foo foo = new Foo(); 
     System.out.println(foo.bar(5) == 7); 
    } 

    public void testBarNegative() { 
     Foo foo = new Foo(); 
     System.out.println(foo.bar(-5) == -7); 
    } 

    public static void main(String[] args) { 
     TestFoo t = new TestFoo(); 
     t.testBarPositive(); 
     t.testBarNegative(); 
    } 
} 

Ceci est un exemple très basique, mais il vous montre comment vous pourriez écrire vos propres tests unitaires. Cela dit, je fortement recommandons d'utiliser une bibliothèque comme JUnit. Il vous donne beaucoup gratuitement et supprime une énorme quantité de code de plaque de chaudière que vous auriez à écrire vous-même. Il génère également de bons rapports et (lorsqu'il est combiné avec quelque chose comme Cobertura) peut vous donner une vue assez complète de la façon dont vos tests sont complets.

0

Je recommanderais que vous utilisez une autre bibliothèque. Il semble que ce que vous voulez faire est de construire votre propre bibliothèque de tests unitaires. Le problème avec cela est que tous les problèmes de base avec votre code, les erreurs logiques que vous faites, vous êtes tout aussi susceptibles de faire dans votre code de test unitaire, de sorte que oui, vos unités passent les tests, mais seulement parce qu'ils faites ce que vous attendez d'eux, pas parce que c'est ce qu'ils DEVRAIENT faire en utilisant des normes strictes dans la langue que vous utilisez. Supposons que vous ayez écrit une fonction qui compare true/false et renvoie 0. dans PHP (0 == false) = true mais (0 === false) = false si vous avez codé pour le scénario 1 mais que vous l'avez ignoré scénario 2 et ensuite écrire un test unitaire qui vérifie que le scénario 1 est valide mais ignore le scénario 2 (ce que vous pourriez faire si vous codez toujours de cette façon) alors votre test d'unité passe en fonction de ce que vous avez défini mais est toujours faux.

Questions connexes