Выполнение теста junit4 с помощью junitperf - PullRequest
2 голосов
/ 27 ноября 2008

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

Чтобы быть более понятным, мой класс Junit4 выглядит примерно так:

public class TestCitta {

    @Test
    public void test1 {}

        @Test
    public void test2 {}
}

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

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?

Ответы [ 4 ]

8 голосов
/ 31 марта 2010

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

5 голосов
/ 11 ноября 2011

Если у вас уже есть 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() {
4 голосов
/ 27 ноября 2008
1 голос
/ 23 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...