2012-03-09 46 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)',它沒有任何意義。總是通過。 – 2012-03-09 20:57:25

+0

ajozwik:這就是爲什麼我包括它 - 我期望它通過,但它似乎並沒有得到它 – naumcho 2012-03-11 03:20:33

+0

在maven測試過去對我來說。也許問題在於Runner在不同的線程中被調用?或者跑步者再次打電話給testPerformance? – 2012-03-11 15:14:21

回答

4

沒有機制將Caliper測試作爲JUnit測試運行。這樣做很複雜,因爲Caliper會將子進程分離出您的基準測試。 Caliper基準測試往往會運行幾秒鐘,這可能會損害測試性能。

您可能想要調查caliper-ci,這是一個持續運行Caliper基準測試的開源項目。

+0

Booo。如果我可以通過簡單地將它們聲明爲測試來運行Caliper基準測試,那將會很好。 – 2014-06-09 00:17:21