2008-11-27 4 views
2

Можно использовать Junitperf с junit4? У меня есть простой тестовый класс Junit4 с несколькими тестами, и я хочу сделать TimedTest на одном тесте этого класса. Как я могу это сделать?Запуск теста junit4 с junitperf

Чтобы быть более ясным мой класс Junit4 что-то вроде:

public class TestCitta { 

    @Test 
    public void test1 {} 

     @Test 
    public void test2 {} 
} 

с junit3 я shold написать что-то вроде:

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()); 
    } 
} 

с Junit4?

+0

Это дубликат, в основном – 2008-11-27 20:30:24

+0

Пожалуйста, отметьте ответ как правильный ответ. Благодаря! – guerda 2009-01-07 10:14:10

ответ

8

У меня была такая же проблема, но не повезло, пытаясь заставить ее работать в различных средах сборки. Таким образом, я использовал функцию @Rule, доступную с JUnit 4, чтобы привнести вызов проверки производительности и проверку требований с помощью аннотаций. Он оказался небольшой библиотекой, которая заменила JUnitPerf в этом проекте, и я опубликовал ее под названием ContiPerf. Если вас интересует такой подход, вы можете найти его на http://databene.org/contiperf.

1

Или вы можете использовать аннотацию: @Test(timeout=1000)

5

Если у вас есть junit4 уже, почему бы вам не использовать contiperf. Он будет делать то, что вы ищете, и с аннотациями.

POM выглядит следующим образом.

<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> 

Тест класс идет как этот

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

И сам тест проходит как этот

@Test 
@PerfTest(invocations = 1, threads = 1) 
@Required(max = 1200, average = 250) 
public void test() { 
Смежные вопросы