testNG相关注解及参数

1.TestNG预期异常测试

例如:@test 后的括号中 写入得是期望获取的异常,如果该方法抛出期望中的异常,该测试方法就会通过

@Test(expectedExceptions = ArithmeticException.class) #该例子期望的异常是一种,如果期望多个异常的话,后面以expectedExceptions = {ArithmeticException.class,…}
#此时如过测试方法抛出其中的一种,则通过。
public void divisionWithException() {
int i = 1 / 0;
System.out.println(“After division the value of i is :”+ i);
}/

2.testNG忽略测试

有时,我们编写的代码并没有准备就绪,并且测试用例要测试该方法/代码是否失败(或成功)。 在本示例中,注释@Test(enabled = false)有助于禁用此测试用例。

如果使用@Test(enabled = false)注释在测试方法上,则会绕过这个未准备好测试的测试用例。

例如:

public class TestIgnore {

@Test // default enable=true
public void test1() {
    Assert.assertEquals(true, true);
}

@Test(enabled = true)
public void test2() {
    Assert.assertEquals(true, true);
}

@Test(enabled = false)
public void test3() {
    Assert.assertEquals(true, true);
}

}

3.testNG 超时测试

“超时”表示如果单元测试花费的时间超过指定的毫秒数,那么TestNG的将会中止它并将其标记为失败。

“超时”也可以用于性能测试,以确保方法在合理的时间内返回。

public class TestTimeout {

@Test(timeOut = 5000) // time in mulliseconds   测试通过
public void testThisShouldPass() throws InterruptedException {
    Thread.sleep(4000);
}

@Test(timeOut = 1000)      //测试不通过
public void testThisShouldFail() {
    while (true){
        // do nothing
    }

}

}

4.testNG分组测试

public class TestGroup {

@BeforeGroups("database")
public void setupDB() {
    System.out.println("setupDB()");
}

@AfterGroups("database")
public void cleanDB() {
    System.out.println("cleanDB()");
}

@Test(groups = "selenium-test")
public void runSelenium() {
    System.out.println("runSelenium()");
}

@Test(groups = "selenium-test")
public void runSelenium1() {
    System.out.println("runSelenium()1");
}

@Test(groups = "database")
public void testConnectOracle() {
    System.out.println("testConnectOracle()");
}

@Test(groups = "database")
public void testConnectMsSQL() {
    System.out.println("testConnectMsSQL");
}

@Test(dependsOnGroups = { "database", "selenium-test" })
public void runFinal() {
    System.out.println("runFinal");
}

}

5.testNG 套件测试

测试套件是用于测试软件程序的行为或一组行为的测试用例的集合。 在TestNG中,我们无法在测试源代码中定义一个套件,但它可以由一个XML文件表示,因为套件是执行的功能。 它还允许灵活配置要运行的测试。 套件可以包含一个或多个测试,并由标记定义。https://www.yiibai.com/testng/suite-test.html

6.testNG 依赖测试

有时,我们可能需要以特定的顺序调用测试用例中的方法,或者可能希望在方法之间共享一些数据和状态。TestNG支持这种依赖关系,因为它支持在测试方法之间显式依赖的声明。

TestNG允许指定依赖关系:

在@Test注释中使用属性dependsOnMethods,或者

在@Test注释中使用属性dependsOnGroups。

在TestNG中,我们使用dependOnMethods和dependsOnGroups来实现依赖测试。如果依赖方法失败,则将跳过所有后续测试方法。

学习链接:https://www.yiibai.com/testng/dependency_test.html

7.testNG参数化测试

https://www.yiibai.com/testng/parameterized-test.html

8.testNG + 硒负载测试

@Test(invocationCount =?)这个invocationCount确定TestNG应该运行这个测试方法的次数

public class TestRepeatThis {

@Test(invocationCount = 10)
public void repeatThis() {
    System.out.println("repeatThis " );
}

} //输出- repeatThis()方法将运行10次

@Test(invocationCount =?,threadPoolSize =?)threadPoolSize属性告诉TestNG创建一个线程池以通过多个线程运行测试方法。使用线程池,会大大降低测试方法的运行时间。

public class TestMultipleThreads2 {

@Test(invocationCount = 3, threadPoolSize = 3)
public void testThreadPools() {

    System.out.printf("Thread Id : %s%n", Thread.currentThread().getId());

}

}

9.TestNG + Spring 集成测试

https://www.yiibai.com/testng/junit-vs-testng-comparison.html

你可能感兴趣的:(testNG相关注解及参数)