2012-03-09 6 views
4

キャリパーコードをjunitにラップしようとしているため、パフォーマンステストはユニットテストの一部として実行されます。動作しているようです - キャリパーテストは実際に実行されますが、正常に終了しません。これを設定する適切な方法は何ですか?キャリパーを使用したJunitセットアップ

import static org.junit.Assert.*; 

import org.junit.Test; 

import com.google.caliper.Runner; 
import com.google.caliper.SimpleBenchmark; 

public class CaliperBenchmarkExample extends SimpleBenchmark { 

     public void timeNanoTime(int reps) { 
      for (int i = 0; i < reps; i++) { 
      System.nanoTime(); 
      } 
     } 

    @Test 
    public void testPerformance() { 
     Runner.main(CaliperBenchmarkExample.class, new String[] { }); 
     assertTrue(true); 
    } 
} 
+1

最初の提案 'assertTrue(true)'、それは意味がありません。常にパスしてください。 –

+0

ajozwik:それは私がそれを含んだ理由です - 私はそれが合格すると思うでしょうが、それはそれに達するように見えません – naumcho

+0

私のために過去のmavenテストで。たぶん問題は、ランナーが別のスレッドで呼ばれているということですか?ランナーはtestPerformanceをもう一度呼び出しますか? –

答えて

4

JUnitテストとしてCaliperテストを実行するメカニズムはありません。そうすることは、Caliperが子プロセスを作成してベンチマークを分離する方法が複雑なために複雑になります。また、キャリパーのベンチマークは数秒間実行される傾向があり、テストのパフォーマンスが低下する可能性があります。

Caliperベンチマークを連続して実行するオープンソースプロジェクトのcaliper-ciを調べるとよいでしょう。

+0

Booo。私がCaliperのベンチマークをIDEから実行することができればいいと思います。 –

関連する問題