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,108评论 1 35
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 早就有记录生活的想法,却发现根本难以抓住! 所以,我放任了,不去抓 随性 7个回车,朋友,愿你一周都能随性而活。
    SunDream_阅读 497评论 0 0
  • 死亡对于当事人来说是痛苦的,而对目睹了这一过程的人来说,却是残酷的。 虽说人总要死去,可这样被病魔缠身直至死亡的...
    默家少爷阅读 185评论 0 0
  • 首先用到 PHPexcel,官网地址 :https://packagist.org/packages/phpoff...
    Author_z阅读 1,106评论 1 0