TestNg官方手冊中對于這2個標記的說明為:
invocationCount 當前方法被調(diào)用的次數(shù);
threadPoolSize 當前方法的線程池大小。方法將被多線程調(diào)用,次數(shù)由invocationCount參數(shù)指定;
注意:
threadPoolSize的設定要依賴invocationCount的設定,如果invocationCount的設定值小于threadPoolSize的設定值,多于的設定是無效的,舉個極端的例子,如果你threadPoolSize設定是100,而invocationCount沒有設定(默認為1次),那么系統(tǒng)只有開啟一個線程來運行。反過invocationCount的設定不依賴threadPoolSize,testNG會以默認值1來運行。
實例:
@Test(dataProvider ="CsvDataProvider", invocationCount = 8, threadPoolSize = 5, description ="資金業(yè)務-同步執(zhí)行-正常業(yè)務場景測試")
這是我目前使用的一段代碼摘要。標記表達的意思便是起5個線程并發(fā),總共執(zhí)行方法8次
[點擊圖片可在新窗口打開]
在使用debug觀察線程的時候可以看到thread啟動了5條。測試代碼執(zhí)行的日志顯示在同一時間內(nèi)方法被調(diào)用了5次
11:12:00,531 [TestNG] INFO DriverDataProvider : =============== START [02N01] ===============
11:12:00,532 [TestNG] INFO DriverDataProvider : =============== START [02N01] ===============
11:12:00,532 [TestNG] INFO DriverDataProvider : =============== START [02N01] ===============
11:12:00,532 [TestNG] INFO DriverDataProvider : =============== START [02N01] ===============
11:12:00,531 [TestNG] INFO DriverDataProvider : =============== START [02N01] ===============
到這里為止,大家可以發(fā)現(xiàn)這個標簽可以非常方便的讓我們執(zhí)行并發(fā)測試,不再需要額外的錄制腳本來壓測。對于小當量及和一些日常的并發(fā)測試可以非常靈活的運用上。
后附上一個發(fā)散的東西。
publicstaticvoidt() {
longstart = System.currentTimeMillis();
while(true) {
//you can do something at here
System.out.println("222");
if((System.currentTimeMillis() - start) > 10000) {
break;
}
}
}
這是一個10秒循環(huán)的方法,當然你也可以變成10分鐘,也可以變成10小時。結合標記invocationCount = 1000000, threadPoolSize = 10你們都懂得。