本文概述
- 描述
- 取决于方法
- 优先
- 已启用
- 团体
- 暂停
@Testpublic void testcase1(){ System.out.println("This is testcase1");
}
在上面的代码中, 我们在测试方法之前指定了@Test批注, 即testcase1()。
我们还可以在@Test批注中显式指定属性。测试属性是特定于测试的, 并且在@Test注释的右侧指定。
@Test(attribute="value")public void testcase2(){ System.out.println("This is testcase2");
}
一些常见属性如下所述:
文章图片
- 描述
- 暂停
- 优先
- 取决于方法
- 已启用
- 团体
让我们通过一个例子来理解。
package com.srcmini;
import org.testng.annotations.Test;
public class Class1 { @Test(description="This is testcase1")public void testcase1(){System.out.println("HR");
}@Test(description="This is testcase2")public void testcase2(){System.out.println("Software Developer");
}@Test(description="This is testcase3")public void testcase3(){System.out.println("QA Analyst");
}}
在上面的代码中, 我们在每个测试中都添加了description属性。 “ 描述” 属性提供有关测试的信息。
取决于方法 当第二种测试方法希望依赖于第一种测试方法时, 则可以通过使用” dependOnMethods” 属性来实现。如果第一个测试方法失败, 则依赖于第一个测试方法的方法, 即第二个测试方法将不会运行。
让我们通过一个例子来理解。
第一种情况:在参数中传递单个值时。
package com.srcmini;
import org.testng.annotations.Test;
public class Class1 {@Testpublic void WebStudentLogin(){System.out.println("Student login through web");
}@Testpublic void MobileStudentLogin(){System.out.println("Student login through mobile");
}@Test(dependsOnMethods= {"WebStudentLogin"})public void APIStudentLogin(){System.out.println("Student login through API");
}}
我们知道TestNG按字母顺序执行测试方法, 因此在上述程序中, APIStudentLogin()将首先执行。但是, 我们希望在执行APIStudentLogin()方法之前先执行WebStudentLogin()方法, 因此这只能通过” dependsOnMethods” 属性来实现。在上述程序中, 我们在APIStudentLogin()测试方法中指定了” dependsOnMethods” 属性, 其值为” WebStudentLogin” , 这意味着将在执行APIStudentLogin()方法之前执行WebStudentLogin()方法。
输出
文章图片
在上面的输出中, 由于TestNG以字母顺序运行测试方法, 因此MobileStudentLogin()在WebStudentLogin()方法之前运行。
第二种情况:在参数中传递多个值时。
package com.srcmini;
import org.testng.annotations.Test;
public class Depends_On_Groups{ @Test(dependsOnMethods= {"testcase3", "testcase2"}) public void testcase1() {System.out.println("This is test case1");
} @Test public void testcase2() {System.out.println("This is test case2");
} @Test public void testcase3() {System.out.println("This is test case3");
} }
在上面的代码中, testcase1()依赖于两个方法, 即testcase2()和testcase3(), 这意味着这两个方法将在testcase1()之前执行。
输出
文章图片
优先 如果未指定” priority” 属性, 则TestNG将以字母顺序运行测试用例。优先级确定测试用例的执行顺序。优先级可以保留-5000到5000之间的整数值。设置优先级后, 最低优先级的测试用例将首先运行, 最高优先级的测试用例将最后执行。假设我们有三个测试用例, 它们的优先级值为-5000、0、15, 那么执行的顺序将是0, 15, 5000。如果未指定优先级, 则默认优先级将为0。
让我们通过一个例子来理解。
package com.srcmini;
import org.testng.annotations.Test;
public class Fruits{@Testpublic void mango(){System.out.println("I am Mango");
}@Test(priority=2)public void apple(){System.out.println("I am Apple");
}@Test(priority=1)public void watermelon(){System.out.println("I am Watermelon");
}}
在上面的代码中, mango()测试方法的默认优先级为0, 因此将首先执行它。西瓜()测试方法将在芒果()方法之后运行, 因为西瓜()测试方法的优先级为2。苹果()测试方法具有最高优先级, 因此将在最后执行。
输出
文章图片
已启用 ” enabled” 属性包含布尔值。默认情况下, 其值为true。如果要跳过某些测试方法, 则需要显式指定” false” 值。
让我们通过一个例子来理解。
package com.srcmini;
import org.testng.annotations.Test;
public class Programming_languages {@Testpublic void c_language(){System.out.println("C language");
}@Test(enabled=false)public void jira(){System.out.println("JIRA is a testing tool");
}@Testpublic void java(){System.out.println("JAVA language");
}}
在上面的代码中, jira()测试方法中enabled属性的值是false, 因此将不会调用此方法。
输出
文章图片
团体 ‘ groups’ 属性用于对属于同一功能的不同测试用例进行分组。
让我们通过一个例子来理解。
package com.srcmini;
import org.testng.annotations.Test;
public class Software_Company{@Test(groups= {"software company"})public void infosys(){System.out.println("Infosys");
}@Testpublic void technip(){System.out.println("Technip India Ltd");
}@Test(groups= {"software company"})public void wipro(){System.out.println("Wipro");
}}
testng.xml
<
?xml version="1.0" encoding="UTF-8"?>
<
!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<
suite name="test_suite">
<
test name="Software Company">
<
groups>
<
run>
<
include name="software company"/>
<
/run>
<
/groups>
<
classes>
<
class name="com.srcmini.Software_Company"/>
<
/classes>
<
/test>
<
!-- Test -->
<
/suite>
<
!-- Suite -->
输出
文章图片
暂停 如果其中一个测试用例花费的时间很长, 而其他测试用例则失败了。为了克服这种情况, 你需要将测试用例标记为失败, 以避免其他测试用例失败。 timeOut是提供给测试用例以完全执行其测试用例的时间段。
让我们通过一个例子来理解。
package com.srcmini;
import org.testng.annotations.Test;
public class Timeout_program {@Test(timeOut=200)public void testcase1() throws InterruptedException{Thread.sleep(500);
System.out.println("This is testcase1");
}@Testpublic void testcaes2(){System.out.println("This is testcase2");
}@Testpublic void testcase3(){System.out.println("This is testcase3");
}}
在上面的代码中, 在testcase1()方法内部, 我们具有Thread.sleep(500), 这意味着testcase1()方法将在500毫秒后执行, 但是我们提供的timeOUT属性值为200, 意味着testcase1() )将在200毫秒后失败。
testng.xml
<
?xml version="1.0" encoding="UTF-8"?>
<
!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<
suite name="test_suite">
<
test name="TimeOut Program">
<
classes>
<
class name="com.srcmini.Timeout_program"/>
<
/classes>
<
/test>
<
!-- Test -->
<
/suite>
<
!-- Suite -->
输出
文章图片
【TestNG注解属性用法示例图解】上面的屏幕显示一个测试用例失败, 其他测试用例通过。
文章图片
推荐阅读
- TestNG @BeforeMethod注解用法示例
- TestNG @BeforeGroups注解用法示例
- TestNG @BeforeClass注解用法示例
- TestNG @AfterTest注解用法示例
- TestNG @AfterSuite注解用法示例
- Learun.framework快速开发框架-功能特点与手机app
- wrapper(Java Service Wrapper)
- Android开发教程 - 使用Data Binding Android Studio不能正常生成相
- Android 应用兼容性最佳实践 | 中文教学视频