2008-11-27 3 views
2

Il est possible d'utiliser Junitperf avec junit4? J'ai une classe de test Junit4 simplet avec plusieurs tests et je veux faire un test TimedTest sur un seul test de cette classe. Comment puis je faire ça?Exécution d'un test junit4 avec junitperf

Pour être plus clair ma classe junit4 est quelque chose comme:

public class TestCitta { 

    @Test 
    public void test1 {} 

     @Test 
    public void test2 {} 
} 

avec junit3 i shold écrire quelque chose comme:

public class TestCittaPerformance { 

    public static final long toleranceInMillis = 100; 

    public static Test suite() { 

     long maxElapsedTimeInMillis = 1000 + toleranceInMillis; 

     Test testCase = new TestCitta("test2"); 

     Test timedTest = new TimedTest(testCase, maxElapsedTimeInMillis); 

     return timedTest; 
    } 

    public static void main(String args[]) { 
     junit.textui.TestRunner.run(suite()); 
    } 
} 

avec junit4?

+0

Ceci est un doublon, la plupart du temps –

+0

S'il vous plaît marquer une réponse comme réponse correcte. Merci! – guerda

Répondre

8

J'ai eu le même problème, mais n'a pas la chance d'essayer de le faire fonctionner dans des environnements différents de construction. J'ai donc utilisé la fonction @Rule disponible depuis JUnit 4 pour injecter l'invocation de test de performance et la vérification des exigences en utilisant des annotations. Il s'est avéré être une petite bibliothèque qui a remplacé JUnitPerf dans ce projet et je l'ai publié sous le nom de ContiPerf. Si cette approche vous intéresse, vous pouvez la trouver au http://databene.org/contiperf.

+0

Belle bibliothèque, j'aime ça! :) – JavaRocky

+0

c'est une grande bibliothèque de junit4. – yincrash

+0

J'ai utilisé cette bibliothèque depuis un moment maintenant. c'est bien. félicitations – jambriz

1

Vous pouvez également utiliser l'annotation: @Test(timeout=1000)

5

Si vous avez junit4 déjà, pourquoi ne pas utilisez-vous contiperf. Il fera ce que vous cherchez et avec des annotations.

POM va comme ceci.

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.10</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.databene</groupId> 
    <artifactId>contiperf</artifactId> 
    <version>2.0.0</version> 
    <scope>test</scope> 
</dependency> 

La classe de test va comme ceci

public class PersonDAOTest { 
@Rule 
public ContiPerfRule i = new ContiPerfRule(); 

Et le test réel va comme ceci

@Test 
@PerfTest(invocations = 1, threads = 1) 
@Required(max = 1200, average = 250) 
public void test() {