2008-12-11 5 views
2

Quels sont les modèles et dos et ne pas faire quand on écrit des tests pour Javolution tests? En particulier je me demandais:Modèles de test de Javolution, dos et ne pas faire

  • TestCase.execute() n'autorise pas le lancement d'exceptions. Comment faire face à eux? Rethrow comme RuntimeException ou stocker dans une variable et affirmer dans TestCase.validate() ou quelque chose?
  • Y a-t-il des coureurs graphiques qui vous montrent les tests qui échouent, c'est-à-dire dans Eclipse? Peut-être quelqu'un a-t-il écrit un JUnit-Wrapper de sorte que je puisse utiliser le Runner Eclipse JUnit?

Répondre

1

Les sources javadoc et javolution donnent quelques exemples et justifications de conception. Voir aussi an article on serverside.

Les tests Javolution contiennent exactement un test, et l'exercice du code testé est séparé de la validation en différentes méthodes execute() et validate(). Ainsi, la même classe de test peut être utilisée à la fois pour les tests de régression et les tests de vitesse (où l'appel à validate() est omis). L'exécution de nombreux tests est également trivialement parallélisable. Les inconvénients de cette séparation sont les suivants: vous obtiendrez plus de consommation de mémoire, puisque les résultats de l'exécution du code exercé doivent être sauvegardés jusqu'à l'appel de validate(). (Libérer ces résultats dans tearDown est probablement une bonne idée.) Et si valider provient d'une classe différente de l'exercice, il peut être difficile de déboguer un échec.

0

Vous pouvez obtenir une sorte de testeur graphique en utilisant l'adaptateur JUnit suivant et en l'exécutant dans Eclipse. Vous pouvez démarrer/déboguer les tests échoués séparément. Malheureusement, la représentation graphique ne comprend rien au sujet du test réel - il montre juste les chiffres [0], [1], etc.

@RunWith (Parameterized.class) de JavolutionJUnit4Adapter public class {

protected final javolution.testing.TestCase test; 

public JavolutionJUnit4Adapter(javolution.testing.TestCase testcase) { 
    this.test = testcase; 
} 

@org.junit.Test 
public void executeTest() throws Exception { 
    enter(REGRESSION); 
    try { 
     new javolution.testing.TestSuite() { 
      @Override 
      public void run() { 
       test(test); 
      } 
     }.run(); 
    } finally { 
     exit(); 
    } 
} 

@Parameters 
public static Collection<javolution.testing.TestCase[]> data() { 
    javolution.testing.TestSuite fp = new WhateverSuiteYouWantToRun(); 
    List<javolution.testing.TestCase> tests = fp.getTestCases(); 
    Collection<javolution.testing.TestCase[]> res = new ArrayList<javolution.testing.TestCase[]>(); 
    for (javolution.testing.TestCase t : tests) { 
     res.add(new javolution.testing.TestCase[] { t }); 
    } 
    return res; 
} 

}

Questions connexes