2

可以将 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

3 回答 3

8

我遇到了同样的问题,但试图让它在不同的构建环境中运行并不幸运。所以我使用了自 JUnit 4 以来可用的 @Rule 特性来注入性能测试调用和使用注解的需求检查。结果它变成了一个小型库,在这个项目中取代了 JUnitPerf,我以的名义发布了它。如果您对这种方法感兴趣,可以在https://github.com/lucaspouzac/contiperf找到它。

于 2010-03-31T17:22:42.533 回答
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() {
于 2011-11-11T09:46:31.150 回答
1

或者您可以使用注释:@Test(timeout=1000)

于 2011-05-23T10:15:23.340 回答