TestNG的并行

- 類級注解

通常 @Test 也可以用來標注類,而不僅僅是方法:

@Test
public class Test1 {
  public void test1() {
  }

  public void test2() {
  }
}

處于類級的@Test會使得類中所有的public方法成為測試方法,而不管他們是否已經被標注。當然,仍然可以用@Test注解重復標注測試方法,特別是要為其添加一些特別的屬性時。

例如:

@Test
public class Test1 {
  public void test1() {
  }

  @Test(groups = "g1")
  public void test2() {
  }
}

test1()test2()都被處理,不過在此之上test2()現在還屬于組 "g1"

- 并行套件

讓組件以一個獨立的線程運行

使用以下命令行參數來指定線程池的大小

java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml

- 并行測試,類和方法

可以通過在suite標簽中使用 parallel 屬性來讓測試方法運行在不同的線程中。

這個屬性可以帶有如下這樣的值:

<suite name="My suite" parallel="methods" thread-count="5">
<suite name="My suite" parallel="tests" thread-count="5">
<suite name="My suite" parallel="classes" thread-count="5">
<suite name="My suite" parallel="instances" thread-count="5">

parallel="methods": TestNG 會在不同的線程中運行測試方法,除非那些互相依賴的方法。那些相互依賴的方法會運行在同一個線程中,并且遵照其執行順序

parallel="tests": TestNG 會在相同的線程中運行相同的<test>標記下的所有方法,但是每個<test>標簽中的所有方法會運行在不同的線程中。這樣就允許把所有非線程安全的類分組到同一個<test>標簽下,并且使其可以利用TestNG多線程的特性的同時,讓這些類運行在相同的線程中

parallel="classes": TestNG 會在相同線程中相同類中的運行所有的方法,但是每個類都會用不同的線程運行

parallel="instances": TestNG會在相同線程中相同實例中運行所有的方法,但是兩個不同的實例將運行在不同的線程中

此外,屬性thread-count允許你為當前的執行指定可以運行的線程數量

注意:@Test 中的屬性timeOut可以工作在并行和非并行兩種模式下

也可以指定@Test方法在不同的線程中被調用。你可以使用屬性 threadPoolSize來實現

@Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)
public void testServer() {}

上例中,方法testServer會在3個線程中調用10次。此外,10秒鐘的超時設定也保證了這三個線程中的任何一個都永遠不會阻塞當前被調用的線程。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 感謝原作者的奉獻,原作者博客地址:http://blog.csdn.net/zhu_ai_xin_520/arti...
    狼孩閱讀 14,130評論 1 35
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 早就有記錄生活的想法,卻發現根本難以抓住! 所以,我放任了,不去抓 隨性 7個回車,朋友,愿你一周都能隨性而活。
    SunDream_閱讀 499評論 0 0
  • 死亡對于當事人來說是痛苦的,而對目睹了這一過程的人來說,卻是殘酷的。 雖說人總要死去,可這樣被病魔纏身直至死亡的...
    默家少爺閱讀 189評論 0 0
  • 首先用到 PHPexcel,官網地址 :https://packagist.org/packages/phpoff...
    Author_z閱讀 1,117評論 1 0