2008-09-18 25 views
7

Tengo una serie de pruebas funcionales contra una aplicación web que se ejecutan correctamente, pero cada una requiere la configuración de nivel de clase y el desmantelamiento proporcionados con las anotaciones @BeforeClass y @AfterClass, y por lo tanto requieren JUnit 4.0 o superior.¿Cómo uso JUnitPerf con JWebUnit y JUnit 4?

Ahora quiero realizar pruebas de carga utilizando un pequeño número de estas pruebas funcionales, que simulan una gran cantidad de usuarios que solicitan la página relacionada de la aplicación web. Para que cada usuario tenga su propio "buscador simulado" en JWebUnit, necesito usar TestFactory en JUnitPerf para instanciar la clase bajo prueba, pero como las pruebas JUnit 4 están anotadas con @Test en lugar de derivarse de TestCase, estoy obteniendo una excepción de TestFactory must be constructed with a TestCase class.

¿Alguien está utilizando con éxito JUnitPerf y su TestFactory con JUnit 4? ¿Y cuál es la salsa secreta que permite que todo funcione?

Respuesta

10

Necesita un JUnit4 aware TestFactory. He incluido uno a continuación.

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

Esperaba esta respuesta (y estaba a punto de verificar la fuente de git), pero fuiste "más allá". ¿Te importaría si revisara tu código fuente como parte de la biblioteca JUnitPerf estándar (con atribución de cource)? –

+1

por favor siéntete libre de hacerlo :) – alexguev