TestNg测试框架使用笔记

Gradle支持TestNG

test { useTestNG(){ //指定testng配置文件 suites(file('src/test/resources/testng.xml')) } }

Maven支持TestNG

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <suiteXmlFiles> <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin>

查看Gradle生成测试报告

\target\reports\buildDashboard\index.html 测试结果公告页面,包括(junitXml)testng(html)的结果链接。

配置TestNg suite

<suite name="waptestng"> <!--enabled="true"让测试生效,可根据情况开启或关闭某些测试--> <test name="service" enabled="true"> <!--指定参数--> <parameter name="accesskey" value="f0af8e412cef7e5058beeb6df2012e1e"/> <!--指定测试包,注意加 .* --> <packages> <package name="b2gonline.wap._systembase.service.*"/> </packages> <!--指定测试类--> <classes> <class name="test.sample.ParameterSample"/> <!--过滤测试类的方法--> <class name="test.IndividualMethodsTest"> <methods> <include name="testMethod" /> </methods> </class> </classes> <!--指定测试分组--> <groups> <run> <!--包含--> <include name="checkintest"/> <!--排除--> <exclude name="broken"/> </run> </groups> </test> </suite>

常用TestNg注解

@Test( //在指定的时间内启用3个线程并发测试本方法10次 threadPoolSize = 3, invocationCount = 10, timeOut = 10000, //等待测试方法t0测试结束后开始本测试 dependsOnMethods = { "t0" }, //指定测试数据源CLASS和数据源名称(参考注解@DataProvider),返回是一个数组,返回几条数据会跑测试方法几次 dataProvider = "testUser", dataProviderClass = MockUser.class, //分组名称 groups = { "checkin-test" } ) //读取配置文件中的参数,配置如上,用@Optional设置默认值 @Parameters({ "accesskey" }) public void t1(User u, @Optional("xxx") String accesskey){ ... }

使用TestNg参数

在做单元测试的时候会有一些不固定因素,TestNg支持从配置文件或数据类中提供参数配置,通过注解很方便的引入或批量生成使用。

注解@Parameters
从XML配置文件中读取, 如上面示例:@Parameters({ "accesskey" })

注解@Test(dataProvider)
如上示例:@Test(dataProvider = "testUser", dataProviderClass = MockUser.class)

MockUser.class

 public class MockUser { @DataProvider(name = "testUser") public static Object[][] testUser() { User u = new User(); u.setId("SJDK3849CKMS3849DJCK2039ZMSK0001"); u.setName("admin-test"); //测试找不到用户 User u2 = new User(); u2.setId(""); u2.setName(""); return new Object[][]{ {u}, {u2} }; } }

使用Factories
功能:通过Factory和参数配置动态批量生成测试方法
示例:

public class WebTestFactory { @Factory public Object[] createInstances() { Object[] result = new Object[10]; for (int i = 0; i < 10; i++) { result[i] = new WebTest(i * 10); } return result; } }
public class WebTest { private int m_numberOfTimes; public WebTest(int numberOfTimes) { m_numberOfTimes = numberOfTimes; } @Test public void testServer() { for (int i = 0; i < m_numberOfTimes; i++) { // ... } } }

然后在XML配置中指定测试类 <class name="WebTestFactory" />

更多参考

  1. TestNg官方文档:http://testng.org/doc/documentation-main.html
  2. Gradle-Test插件配置说明:http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.Test.html
  3. TestNg和JUnit4对比:http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/

你可能感兴趣的:(TestNG)