2011-05-18 2 views
0

Je voudrais capturer les timings de mes tests jUnit dans un format que je peux extraire en excel ou en csv. Existe-t-il un outil ou même un moyen simple de le faire par injection pour le faire?Méthode simple de sortie des timings jUnit au format consommable

J'ai vu jUnitPerf, mais cela ne comprend aucune sortie, et nécessite également du code pour créer des ensembles de tests, ce qui est beaucoup plus élaboré que je ne le pense.

(ont étudié les questions suivantes sans trouver la réponse)

Répondre

1

Une façon serait d'écrire votre propre coureur avec un écouteur personnalisé:

public class TimingRunner { 

    public static void main(String... args) throws Exception { 
    JUnitCore junit = new JUnitCore(); 
    RunListener listener = new TimingListener(); 
    junit.addListener(listener); 

    List<Class<?>> classes = new ArrayList<Class<?>>(); 
    for (String each : args) { 
     classes.add(Class.forName(each)); 
    } 

    Result result = junit.run(classes.toArray(new Class[0])); 
    system.exit(result.wasSuccessful() ? 0 : 1); 
    } 


    private static class TimingListener extends RunListener { 
    private Map<Description, Long> tests = new HashMap<Description, Long>(); 

    @Override 
    public void testStarted(Description description) { 
     tests.put(description, System.currentTimeMillis()); 
    } 

    @Override 
    public void testFinished(Description description) throws Exception { 
     Long startTime = tests.get(description); 
     if (startTime != null) { 
     long runTime = System.currentTimeMillis() - startTime.longValue(); 
     System.out.println(description + ", " + runtime + "\n"); 
     } 
    } 

    @Override 
    public void testRunFinished(Result result) throws Exception { 
     System.out.flush(); 
    } 
    } 
} 

Passez les noms de classe des tests que vous veux passer du temps à la principale de TimingRunner.

+0

+1 C'est simple et facile à suivre, je l'aime bien. – cgp