我正在使用testNG和Selenium来运行我的应用程序的多个功能测试。
为了获得更稳定的测试我决定在项目文件夹中包含firefox二进制文件并调用此特定二进制文件而不是默认浏览器。
我现在遇到的问题是,如果有人想要使用我的测试,他必须在他的日食中导入项目,重新链接java 8库,在他的日食上安装TestNG,将selenium jar添加到项目中并最终创建testNG配置,最后用选择的xml运行它。 我想知道这是否可以简单地将项目转换为我将通过命令行调用的jar文件,如:
java SeleniumTestNGTest myXmlFile.xml
这样可以避免上面写的不同设置吗?我们可以使用java从jar调用testNG测试吗? firefox可以从jar文件中运行吗?
编辑1:评论中的一个好建议是将我的源迁移到maven项目。但仍然存在同样的问题。 maven能够管理需要我的测试项目的设置吗? (这是selenium jar,java 8库,testNG jar和运行firefox浏览器)
答案 0 :(得分:1)
最后我没有使用maven,我刚刚在我的项目中创建了一个main。 main将调用在programm参数中传递的XML文件中指定的testNG套件。这个方法允许我从jar执行测试而不关心extern库(库testNG和selenium已经在里面)。
这里是主要的代码,如果它可以帮助任何人:
public class Runner {
public static void main(String[] args) throws IOException {
if(args.length != 2) {
System.out.println("Usage : <xmlFile> <OutputFileName>");
System.exit(-1);
}
Path path = Paths.get(args[0]);//Path to the xml
new PrintWriter(args[1]).close();
Charset charset = StandardCharsets.UTF_8;
String content = new String(Files.readAllBytes(path), charset);
content = content.replaceAll("theOutputFileNamePattern", args[1]);
Files.write(path, content.getBytes(charset));
//We create a testNG object to run the test specified in the xml file
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
List<String> suites = Lists.newArrayList();
suites.add(args[0]);
testng.setTestSuites(suites);
testng.run();
}
}
然后你只需要进入eclipse,然后clic on File - &gt;出口 - &gt; Runnable Jar文件 - &gt;选择要导出的配置 - &gt;完成。