TestNg官方手冊中對于這2個標(biāo)記的說明為:
invocationCount 當(dāng)前方法被調(diào)用的次數(shù);
threadPoolSize 當(dāng)前方法的線程池大小。方法將被多線程調(diào)用,次數(shù)由invocationCount參數(shù)指定;
注意:
threadPoolSize的設(shè)定要依賴invocationCount的設(shè)定,如果invocationCount的設(shè)定值小于threadPoolSize的設(shè)定值,多于的設(shè)定是無效的,舉個極端的例子,如果你threadPoolSize設(shè)定是100,而invocationCount沒有設(shè)定(默認(rèn)為1次),那么系統(tǒng)只有開啟一個線程來運行。反過invocationCount的設(shè)定不依賴threadPoolSize,testNG會以默認(rèn)值1來運行。
實例:
@Test(dataProvider ="CsvDataProvider", invocationCount = 8, threadPoolSize = 5, description ="資金業(yè)務(wù)-同步執(zhí)行-正常業(yè)務(wù)場景測試")
這是我目前使用的一段代碼摘要。標(biāo)記表達(dá)的意思便是起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)這個標(biāo)簽可以非常方便的讓我們執(zhí)行并發(fā)測試,不再需要額外的錄制腳本來壓測。對于小當(dāng)量及和一些日常的并發(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)的方法,當(dāng)然你也可以變成10分鐘,也可以變成10小時。結(jié)合標(biāo)記invocationCount = 1000000, threadPoolSize = 10你們都懂得。