今天来学习下testng的一些辅助设置项。
1. Ignoring
TestNG可以忽略所有@Test方法:
在一个类中 在特定的包中 在一个包和其子包中
使用方式:@Ignore
在方法级别使用时,@ Ignore在功能上等效于@Test(enabled = false)。示例如下:
import org.testng.annotations.Ignore; import org.testng.annotations.Test; @Ignore public class TestcaseSample { @Test public void testMethod1() { } @Test public void testMethod2() { } }
@Ignore的优先级高于单个@Test方法的注解。将@Ignore放在一个类上时,该类中的所有测试方法都将被禁用。
要忽略特定程序包中的所有测试,只需创建package-info.java并向其添加@Ignore注解:
@Ignore package com.testng.master; import org.testng.annotations.Ignore;
这样便会在包com.testng.master及其所有子包中忽略所有@Test方法。
2. 并行的设置
可以设置TestNG以各种方式在单独的线程中运行测试。
2.1 并行运行组件
如果正在运行多个组件文件(例如“ java org.testng.TestNG testng1.xml testng2.xml”),并且希望每个组件在单独的线程中运行,则此功能很有用。可以使用以下命令行标志来指定线程池的大小:
java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml
2.2 并行的测试,类和方法
标记上的并行(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将在同一线程中的同一标记中运行所有方法,但是每个标记将位于单独的线程中。可以将所有不是线程安全的类归入同一中,并确保它们都将在同一线程中运行,同时利用TestNG使用尽可能多的线程来运行测试。
- parallel =“ classes”:TestNG将在同一线程中运行同一类中的所有方法,但是每个类将在单独的线程中运行。
- parallel =“ instances”:TestNG将在同一线程中的同一实例中运行所有方法,但是在两个不同实例中的两个方法将在不同线程中运行。
- 属性thread-count允许指定应为此执行分配多少个线程。
还可以指定@Test方法从不同的线程调用。使用属性threadPoolSize来实现:
@Test(threadPoolSize = 3, invocationCount = 10, timeOut = 10000) public void testServer() {
在这个示例中,将从三个不同的线程调用函数testServer十次。此外,十秒的超时保证没有任何线程将永远在该线程上阻塞。
注:@Test的属性timeOut可在并行和非并行模式下工作。