Selenium-Maximo" cant调用public java.lang.object [] [] framework.AutomationBaseTest.getBrowsers()"

时间:2017-06-21 21:15:42

标签: eclipse selenium jenkins testng maximo

尝试运行由IBM专门为maximo打包的selenium。当我在Eclipse IDE中运行脚本时,它们工作正常。但是,我试图通过Jenkins运行TestNG脚本,因此我需要能够在命令行中运行它们。我用了这个命令:

java -Djava.net.preferIPv4Stack=true -ea -Dfile.encoding=Cp1252 -classpath C:\commandLine\testng.jar;C:\Users\zunigmx\Documents\workspace4\Automation\classes;C:\Users\zunigmx\Documents\workspace4\Automation\lib\* org.testng.TestNG C:\commandLine\testng-customsuite.xml

得到了这个错误:

enter image description here

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

当你有一个满足以下特征的类时,通常会发生这种情况:

  • 您的类有一个参数化构造函数,使用注释InputStream inputStream = getAssets().open(fileName);
  • 进行注释
  • 标记为工厂方法的构造函数与同样位于同一类中的数据提供程序组合。

现在,当TestNG遇到您的类的构造函数标记有注释 String fileName = "MySQLiteDB.db"; File file = getDatabasePath(fileName ); if (!file.exists()) { if (!file.getParentFile().exists()) { file.getParentFile().mkdir(); } InputStream inputStream = getAssets().open(DATABASE_NAME); OutputStream outputStream = new FileOutputStream(file); byte[] buffer = new byte[1024 * 8]; int numOfBytesToRead; while((numOfBytesToRead = inputStream.read(buffer)) > 0) outputStream.write(buffer, 0, numOfBytesToRead); inputStream.close(); outputStream.close(); } db = SQLiteDatabase.openOrCreateDatabase(file, null); 并且与数据提供程序耦合时,它将尝试查找使用@Factory注释注释的方法其名称与数据提供者名称匹配。一旦找到这个方法(在你的情况下该方法是@Factory TestNG尝试使用反射来实例化你的类然后调用这个数据提供者方法。但是在这里,TestNG无法实例化你的类,因为你的类作为参数化构造函数等等TestNG不知道要传递给构造函数的内容,以便可以实例化您的类。由于您的数据提供程序方法也是一个实例方法,因此TestNG卡住了。

要解决此问题,您需要将@DataProvider方法设为静态方法,然后重试。

无论测试是如何执行的(无论是通过Jenkins还是通过eclipse IDE),这种行为都是一样的