zoukankan      html  css  js  c++  java
  • TestNG注解使用技巧

    之前在测试中一直使用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来帮它完成这个任务。

    代码也比较简单,如下:

    1         @Factory
    2         public static Object[] create() throws IOException{
    3             List<debugAssertion> result = new ArrayList<debugAssertion>();
    4             Assertion as = new Assertion();
    5                 result.add(new debugAssertion(as));
    6             return result.toArray();

    将这个方法加入到测试类中后运行run as TestNG test,运行成功!!!

    [TestNG] Running:
      C:UsersIBM_ADMINAppDataLocalTemp	estng-eclipse-1577888796	estng-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
    ===============================================
  • 相关阅读:
    linux C总结篇(进程)
    进程与线程的区分
    递归的两种思路
    Linux下git与github的一般使用
    文件读写和文件指针的移动
    文件的创建,打开与关闭
    一个简单脚本
    linux 三剑客命令(grep,sed ,awk)
    常用正则表达式
    PAT:1002. A+B for Polynomials (25) 部分错误
  • 原文地址:https://www.cnblogs.com/clarke157/p/6558476.html
Copyright © 2011-2022 走看看