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