從字面理解也能大概看出是什麼意思。為了方便理解,我們先來看乙個完整的xml下面這個是我自己平時專案用到的xml
thread-count="10"
parallel=""
verbose="1"
name="******test"
annotations="jdk"
time-out="1800000">
name="browser"
value="chrome" />
class-name="com.mytestng.utils.testnglistener">
listener>
class-name="com.mytestng.utils.myreport">
listener>
listeners>
name="******test"
junit="false"
annotations="jdk">
name="com.mytestng.test.runner.cardlisttest" />
name="com.mytestng.test.runner.wsconfigtest" />
name="com.mytestng.test.runner.plantest" />
name="com.mytestng.test.runner.quickcreatetest" />
classes>
test>
suite>
這個引數是指testng執行時的執行緒池的大小。當啟用了parallel時生效。具體的大小可以從xml檔案中指定。若不指定,預設為10.啟用此引數後可以大幅提高測試用例執行的速度
parallel=」methods」 按照method級別進行併發,即便是配置了依賴跟順序的也會用不同的執行緒執行,但是會按照順序。
parallel=」tests」 按照xml定義的< test > 來執行。
parallel=」classes」 按照類來併發執行
parallel=」instances」 這個是按照例項來併發執行(這個不常用)
其實就是日誌的冗餘級別。tesng官方文件 數字越大,表示日誌打的越細緻。這個如果是要對testng進行重寫,或者擴充套件,做除錯的時候還是很有用的。來點實際的。我們做個示例,看看究竟是不是這樣
先來看看verbose
我們先配置成0:
reruntimes="2"
thread-count="10"
parallel="tests"
verbose="0"
name="demo"
annotations="jdk"
time-out="1800000">
@test()
public
void
dotest()
執行,看看結果。
0級別的日誌。就是0冗餘:
this is the verbose parameter test!
console只是輸出了測試用例自己的輸出
我們調整一下。調整到10.看一下會有什麼樣的變化:
...
... testng 6.8.6beta_20130517_2142 by cédric beust ([email protected])
...[testrunner] running the tests in
'testngclone'
with
parallel mode:tests
[runinfo] adding method
selector: org.testng.internal.xmlmethodselector@d64342 priority: 10
[testclass] creating testclass for [classimpl class=com.netease.demo.verbose]
[testclass] adding method
verbose.dotest
()[pri:
0, instance:null] on testclass class com.netease.demo.verbose
[xmlmethodselector] including method
com.netease.demo.dobeforeclass
()[xmlmethodselector] including
method
com.netease.demo.dotest
()
由於日誌很多,就沒截全。可以看到,幾乎每一步的操作都列印出來了。所以通常這個級別,我建議都是調整成5.這樣查詢問題會比較方便。
來繼續看看併發執行的引數,我們繼續調整一下。同時,將測試**更新一下,加到10個測試
為了不受干擾,我們日誌級別調整到最低
name="demo" annotations="jdk"
time-out="1800000">
然後測試方法的**調整下,列印出線程的名稱:
@test()
public
void
dotest7()
結果如下:
testnginvoker-dotest2():1495786491980
testnginvoker-dotest3():1495786491981
testnginvoker-dotest10():1495786491984
testnginvoker-dotest1():1495786491984
testnginvoker-dotest7():1495786491984
testnginvoker-dotest6():1495786491985
testnginvoker-dotest9():1495786491986
testnginvoker-dotest4():1495786491987
testnginvoker-dotest8():1495786491987
testnginvoker-dotest5():1495786491988
可以看到,幾乎是同時發起的。當然因為我的電腦比較渣,同時的比較少。而且這裡也可以看到,如果沒有配置test執行的順序,使用了併發的方式執行,執行的順序是無法保證的。
下邊我們再改一下,看看是否可以控制他的順序:
@test(priority=1..10)
testnginvoker-dotest8():1495786748387
testnginvoker-dotest1():1495786748388
testnginvoker-dotest7():1495786748390
testnginvoker-dotest5():1495786748391
testnginvoker-dotest2():1495786748392
testnginvoker-dotest4():1495786748392
testnginvoker-dotest10():1495786748393
testnginvoker-dotest3():1495786748393
testnginvoker-dotest6():1495786748394
testnginvoker-dotest9():1495786748394
事實證明,priorty引數,無法控制執行的順序,那換成dependonmethods呢?
@test(dependsonmethods=)
testnginvoker-dotest1():1495787138612
testnginvoker-dotest2():1495787138620
testnginvoker-dotest3():1495787138624
testnginvoker-dotest4():1495787138626
testnginvoker-dotest5():1495787138629
testnginvoker-dotest6():1495787138633
testnginvoker-dotest7():1495787138636
testnginvoker-dotest8():1495787138640
testnginvoker-dotest9():1495787138643
testnginvoker-dotest10():1495787138646
成功了。但是如果只是這樣。那我的多執行緒有何用呢?那還不是相當於1個執行緒在執行?
當然,別忘了,併發是有多種模式的,methods是最小的乙個粒度。還可以是tests或者
classes。在其他模式下,還是可以有不小的提公升。
更多的用法,可以參考testng的官網文件,然後自己動手實踐一下。
[1]testng官網
[2]testnglistenerapis
參考 JScript 執行時錯誤說明
jscript 執行時錯誤 jscript 執行時錯誤是指當 jscript 指令碼試圖執行乙個系統不能執行的動作時導致的錯誤。當正在執行指令碼 計算變數表示式 或者正在動態分配記憶體時出現jscript 執行時錯誤時。以下是76個執行時錯誤 錯誤號 描述 十進位制 十六進製制 說明 5 800a0...
VC執行時庫 MD MDd MT MTd說明
vc執行時庫設定 vc專案屬性 配置屬性 c c 生成 執行時庫。可以採用的方式有 多執行緒 mt 多執行緒除錯 mtd 多執行緒dll md 多執行緒除錯dll mdd 單執行緒 ml 單執行緒除錯 mld vs2008目前支援以上4種 各執行時庫的說明,參考msdn的 md mt ld 使用執行...
docker執行tomcat常用引數說明
注 執行tomcat的時候有乙個坑 solr資料夾下才能放war包或者解壓好的war包,對映到容器內的 引數說明 v 宿主機真實路徑 容器內的路徑 把宿主機真實路徑對映到容器內的路徑 name 容器名 指定容器的別名,方便啟動 docker start 容器名 停止 docker stop 容器名 ...