尝试运行由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
得到了这个错误:
有什么建议吗?
答案 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),这种行为都是一样的