2008-09-18 6 views
7

J'ai une série de tests fonctionnels sur une application Web qui s'exécute correctement, mais chacun nécessite l'installation et le démontage de niveau classe fournis avec les annotations @BeforeClass et @AfterClass, et nécessite donc JUnit 4.0 ou supérieur.Comment utiliser JUnitPerf avec JWebUnit et JUnit 4?

Maintenant, je veux effectuer des tests de charge en utilisant un petit nombre de ces tests fonctionnels, qui simulent un grand nombre d'utilisateurs demandant la page connexe de l'application Web. Pour que chaque utilisateur ait son propre "navigateur simulé" dans JWebUnit, j'ai besoin d'utiliser un TestFactory dans JUnitPerf pour instancier la classe à tester, mais comme les tests JUnit 4 sont annotés avec @Test au lieu d'être dérivés de TestCase, je suis obtenir une exception TestFactory must be constructed with a TestCase class.

Est-ce que quelqu'un utilise avec succès JUnitPerf et son TestFactory avec JUnit 4? Et quelle est la sauce secrète qui permet à tout cela de fonctionner?

Répondre

10

Vous avez besoin d'une version test de JUnit4. J'en ai inclus un ci-dessous.

import junit.framework.JUnit4TestAdapter; 
import junit.framework.TestCase; 
import junit.framework.TestSuite; 

import com.clarkware.junitperf.TestFactory; 

class JUnit4TestFactory extends TestFactory { 

    static class DummyTestCase extends TestCase { 
     public void test() { 
     } 
    } 

    private Class<?> junit4TestClass; 

    public JUnit4TestFactory(Class<?> testClass) { 
     super(DummyTestCase.class); 
     this.junit4TestClass = testClass; 
    } 

    @Override 
    protected TestSuite makeTestSuite() { 
     JUnit4TestAdapter unit4TestAdapter = new JUnit4TestAdapter(this.junit4TestClass); 
     TestSuite testSuite = new TestSuite("JUnit4TestFactory"); 
     testSuite.addTest(unit4TestAdapter); 
     return testSuite; 
    } 

} 
+0

Je me suis attendu à cette réponse (et j'étais sur le point de vérifier la source de git), mais vous êtes allé "au-dessus et au-delà". Cela vous dérangerait-il si je vérifiais votre code source dans le cadre de la bibliothèque JUnitPerf standard (avec attribution de court)? –

+1

s'il vous plaît n'hésitez pas à le faire :) – alexguev