用代码触发TestNG实现并发测试

发表于:2018-2-02 11:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:堕落门徒    来源:博客园

  有时候希望测试用例能用代码触发,发现testng支持这种操作,于是记录一下:
  首先添加testng依赖:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
</dependency>
  然后实现要被调用的测试用例:
/**
* testng 注解实现并发测试
*/
public class ConcurrentTest {
@Test(threadPoolSize = 10, invocationCount = 10, timeOut = 1000)
public static void display() {
System.out.println(UUID.randomUUID().toString());
}
}
  再用代码触发执行该测试用例:
/**
* 代码触发testng测试
*/
public class TestNgDemo {
public static void main(String[] args) {
/**初始化testNG对象*/
TestNG testNG = new TestNG();
TestListenerAdapter listener = new TestListenerAdapter();
testNG.addListener(listener);
/**添加需要执行的测试类数组*/
testNG.setTestClasses(new Class[]{ConcurrentTest.class});
/**执行测试用例*/
testNG.run();
/**汇总分析*/
List<ITestResult> pass = listener.getPassedTests();
List<ITestResult> failed = listener.getFailedTests();
List<Long> interval = pass.stream().map(x -> (x.getEndMillis() - x.getStartMillis())).collect(Collectors.toList());
/**最大耗时*/
long maxtime = interval.stream().max(Comparator.naturalOrder()).get();
/**最小耗时*/
long mintime = interval.stream().min(Comparator.naturalOrder()).get();
/**平均耗时*/
double avgtime = interval.stream().mapToDouble(i -> i).average().getAsDouble();
System.out.println(String.format("test result: [success: %s],[failure: %s]",pass.size(),failed.size()));
System.out.println(String.format("performance analysis: [maxtime: %s(ms)],[mintime: %s(ms),[avgtime: %s(ms)]]",
maxtime, mintime, avgtime));
}
}
  最后执行结果如下:
[TestNG] Running:
Command line suite
894eecc7-6d39-4b8d-bc6f-36c94296ff13
f7bdeb99-2baf-4894-a0a3-40fd0792432a
ce27be2e-402b-46bb-8b71-c983f2d3b36c
4b042268-ede8-4c75-9d9a-e5ea7cf63d93
a2dd8b48-56e9-4187-b2f8-004a99164b3c
b4d188e2-1ba4-4635-a546-7131faa2dede
cbffc694-f0f5-48e3-80ec-e9cebdb054b9
904eaab1-3ef7-4627-bc6c-0e890510b119
3db7eb16-f369-449c-be2c-cb89e9647ad0
c4baf3ce-a162-40e0-aa27-e538cc09fb99
===============================================
Command line suite
Total tests run: 10, Failures: 0, Skips: 0
===============================================
test result: [success: 10],[failure: 0]
performance analysis: [maxtime: 8(ms)],[mintime: 0(ms),[avgtime: 2.8(ms)]]
Process finished with exit code 0

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号