使用Maven

时间:2016-08-03 13:58:57

标签: java eclipse maven selenium testng

我正在使用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浏览器)

1 个答案:

答案 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;完成。