2

Junit4 で Junitperf を使用することは可能ですか? 私はいくつかのテストを含む単純な 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 に答える