5.8 - Class level annotations
@Test注解可以放置在類上:
@Test
public class Test1 {
public void test1() {
}
public void test2() {
}
}
類級別注解的效果是將這個類的所有的public方法都變成測試方法,即使他們沒有被注解。還可以在需要增加屬性的方法上重復@Test注解。
例如:
@Test
public class Test1 {
public void test1() {
}
@Test(groups = "g1")
public void test2() {
}
}
將方法test1()和test2()都變成測試方法,但是在此之上,test2()現在屬于組"g1".
5.9 - Parallel running and time-outs
可以通過使用parallel屬性要求TestNG在單獨的線程中運行測試。這個屬性可以在兩個值中取其一:
<suite name="My suite" parallel="methods" thread-count="5">
<suite name="My suite" parallel="tests" thread-count="5">
* parallel="methods": TestNG將在單獨的線程中運行測試方法,除了那些依賴其他測試方法的,這些將在同一個線程中運行,以保證他們的執行順序。
* parallel="tests": TestNG將在一個線程中運行所有在同一個<test>標簽中的測試方法,但是每個<test>標簽將在單獨的線程中運行。這種方式容許把所有不是線程安全的類分組到相同的<test>標簽中,保證他們將在相同的線程中運行,有利于TestNG使用盡可能多的線程來運行測試。
此外,thread-count屬性容許指定運行時將分配多少線程。
注意:@Test的屬性timeOut在并發和非并發模型下都可以工作。
也可以指定@Test方法在不同的線程中被調用。可以使用threadPoolSize屬性來實現這樣的結果:
@Test(threadPoolSize = 3, invocationCount = 10, timeOut = 10000)
public void testServer() {
}
在這個例子中,方法testServer將被3個不同線程調用10次。此外,10秒種的time-out屬性保證任何線程都不會長時間阻塞。