TestNG注解使用技巧 - @Factory
之前在测试中一直使用testNG的@Test注解都很顺利没有碰到什么问题,今天突然遇到@Test不能用的情况,运行后提示:
org.testng.TestNGException: Can't invoke public void testautomation.debugAssertion.testdebug(): either make it static or add a no-args constructor to your class
赶紧查看测试类是不是什么地方写的不对,函数调用关系是不是写对了,检查后代码并没有问题,于是上网查资料后恍然大悟,是因为测试类没有被实例化导致@Test的方法不能正常调用。以前没碰到问题是因为测试类没有定义有参构造函数。
分析后发现:
在run as TestNG test的时候,TestNG会调用测试用例所在测试类的无参构造方法,从而将测试类实例化,然后执行在每个类中的测试方法。但是我的测试类只有一个有参构造函数,TestNG不能实例化类。
于是继续找解决办法,发现@Factory只会被调用一次,而且@Factory方法优先于@Test方法和配置方法被调用,只有当所有的@Factory方法被调用之后,TestNG才执行@Test方法和配置方法。
既然TestNG无法实例化对象,那么我们就用@Factory来帮它完成这个任务。
代码也比较简单,如下:
@Factory
public static Object[] create() throws IOException{
List<debugAssertion> result = new ArrayList<debugAssertion>();
Assertion as = new Assertion();
result.add(new debugAssertion(as));
return result.toArray();
将这个方法加入到测试类中后运行run as TestNG test,运行成功!!!
[TestNG] Running:
C:\Users\IBM_ADMIN\AppData\Local\Temp\testng-eclipse-1577888796\testng-customsuite.xml 2017-03-16 11:14:19 testautomation.Assertion : verify success : 1
Thread-1 : true
[]
PASSED: testdebug on Thread[Thread-0,5,main] ===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
=============================================== ===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
TestNG注解使用技巧 - @Factory的更多相关文章
- 自动化测试框架selenium+java+TestNG——TestNG注解、执行、测试结果和测试报告
TestNG是java的一个测试框架,相比较于junit,功能更强大和完善,我是直接学习和使用的TestNG就来谈下TestNG的一些特点吧. TestNG的特点 注解 TestNG使用Java和面向 ...
- selenium2中的TestNg注解和数据驱动的简介及使用
TestNg常用注解介绍,先来张图: 先看一下,以上各个注释的运行次序: @Test 表示的意义: 1.表示示该方法是一个测试方法,在运行时,会自动的运行有@Test注脚的方法. 示例: @Be ...
- TestNG系列(二)TestNG注解
前言 TetsNG提供了很多注解,允许测试人员灵活地组织测试用例 一.@Test @Tets是TestNG的核心注解,被注解的方法,表示为一个测试方法. description属性 @Test(des ...
- testNG 注解使用说明
1.TestNG常用注解 @BeforeSuite 标记的方法:在某个测试套件(suite)开始之前运行 @BeforeTest 在某个测试(test)开始之前运行 @BeforeClass 在某个测 ...
- testng 注解
testng.xml suite(套件): 由一个或多个测试组成 test(测试): 由一个或多个类组成 class(类): 一个或多个方法组成 @BeforeSuite: 在某个测试套件开始之 ...
- 超详细 Spring @RequestMapping 注解使用技巧
@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一.这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上. 在这篇文章中,你将会看到 @R ...
- Spring @RequestMapping 注解使用技巧
@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一.这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上. 在这篇文章中,你将会看到 @R ...
- 超详细 Spring @RequestMapping 注解使用技巧 (转)
@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一.这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上. 在这篇文章中,你将会看到 @R ...
- Spring MVC中@RequestMapping注解使用技巧(转)
@RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...
随机推荐
- Java温故而知新(7)Object类及其方法讲解
一.java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...
- 一道google的面试题(据说)
1. 原题(同事给的) Max Howell 参加了谷歌的面试,出题人竟然要求 Max Howell 在白板上作出解答,Max Howell 当然愤怒地拒绝了,回家以后马上在微博上跟我们分享他的吐槽: ...
- 记录开发Nodejs c++ addon的一些经验(一、技术栈)
Nodejs c++ addon 是用c++去编写Nodejs的插件 技术栈: 1.node-gyp 一个用于把c++文件编译成node可执行文件的库 2.v8 google v8引擎 用于处理c++ ...
- IDEA 自动生成serialVersionUID
场景:刚转到用IDEA,因为需要生成serialVersionUID,并没有自动生成. 转自:http://blog.csdn.net/liuzongl2012/article/details/451 ...
- Logger性能优化
最近排查线上问题,无意中发现了Logger堵塞的情况,排查的同时也做下总结,做个笔记,以防备用. 先上图,看下实际堵塞的情况 从图中可以清楚的看到标黄的都在 waiting to lock <0 ...
- ActiveMQ相关:
MQ连接字符串:failover:tcp://127.0.0.1:61616 管理地址:http://localhost:8161/admin/
- Java类——JDBC链接、并操作MySQL数据库
Java——MySQL数据库操作类 package pkg.src.database; import java.sql.*; public class MYSQL_DBManager { // //定 ...
- Python爬虫教程-19-数据提取-正则表达式(re)
本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式 Python爬虫教程-19-数据提取-正则表达式(re) 正则表达式 ...
- Android分享图文到朋友圈代码。
分享到微信朋友圈代码.不好用,最后选择了shareSdk. private static void shareToTimeLine(File file) { Intent intent = new I ...
- SQL Server ->> T-SQL查询面试题之实例版
1 - 3 题: 数据表结构: OrderID ProductID OrderDate SaleAmount 1 1 2015-01-01 100 2 6 2015-02-01 900 3 1 ...