1

データベースにレコードをtestmethod作成testNGするthreadPoolSize = 10

すべてのスレッドがすべてのレコードを作成するのにかかる合計時間を計算する必要があります。同じものを見つけるのを手伝ってください。

@Test(threadPoolSize = 10, invocationCount = 10)
public void testCreate(){
       long StartTime = new Date().getTime() ; 
        //operation to create records
       long EndTime = new Date().getTime() ;

     }

上記のコードですべてのスレッドの所要時間を計算するにはどうすればよいですか?

上記のコードでは、一度に 1 つのスレッドだけにかかった時間が表示されます。

4

2 に答える 2

0

startTime を追跡する startTick() のような外部関数を呼び出し、一度設定すると上書きされず、すべての endtime を収集する endTick() を呼び出します。afterTest では、次のような endTick - startTick..何かを実行できます。

startTick(){
  if(startTime == null)
    startTime = new Date().getTime();
}

testCreate() {
  startTick(); 
        //operation to create records
  endTick();
}

endTick(){
    endTime = new Date().getTime();
}
@AfterTest
afterTest(){
  endTime - startTime;
}
于 2012-12-24T12:06:06.897 に答える
0

同じテストの他のスレッドでは使用されず、レポートで使用できるように、テスト時間に関するデータを公開する必要があるようです。

このために、各テストの結果を中央の場所に保存し、後で合計を見つけることができます。以下はあなたのために働くでしょうか?

public class TimeTest {
    Map<Long, Long> timeRecord = new ConcurrentHashMap<Long, Long>();

    @Test(threadPoolSize = 10, invocationCount = 10)
    public void testCreate(){
        long threadID = Thread.currentThread().getId();
        long startTime = new Date().getTime() ; 

        //operation to create records

        long endTime = new Date().getTime();
        long diffTime = endTime - startTime;
        timeRecord.put(threadID, diffTime);
        // Log time taken
        System.out.println("TestMethod[" + threadID + "] TestTime: " + diffTime);
    }

    @AfterTest
    public void displayTime() {
        long runtime = 0;
        for (Long threadID : timeRecord.keySet()) {
            runtime += timeRecord.get(threadID);
        }
        System.out.println("AfterSuite TotalTime: " + runtime);
    }

}

テストの一部だけでなく、テスト全体の時間を測定したい場合はITestResult、TestNG が提供するインターフェースを使用できます。

@AfterMethod
public void recordTime(ITestResult testResult){
    long threadID = Thread.currentThread().getId();
    long timeDiff = testResult.getEndMillis() - testResult.getStartMillis();
    // Log time taken
    System.out.println("AfterMethod[" + threadID + "] TestTime: " + timeDiff);
}

ただし、追加のオーバーヘッドが発生する可能性があるため、上記の時間とは異なる場合があります。

于 2012-12-25T00:14:15.950 に答える