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
    ===============================================
  • 相关阅读:
    Microsoft SQL Server 2008 基本安装说明
    微软的招聘哲学——做微软人的五大核心素质
    大型网站性能优化的通用方法
    模型驱动的开发,回忆一年多前的一次开发
    远离客户陷阱小故事 转
    单例模式(Singleton)
    真的很高兴,就在今天“博客园团队”为我们开通了 “CSLA 团队”
    桥接模式(Bridge)与合成/聚合复用原则(CARP)
    2009年11月11日
    虚拟化的好处 随笔
  • 原文地址:https://www.cnblogs.com/clarke157/p/6558476.html
Copyright © 2011-2022 走看看