Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Maven从jar运行testNG项目_Java_Eclipse_Maven_Selenium_Testng - Fatal编程技术网

Java 使用Maven从jar运行testNG项目

Java 使用Maven从jar运行testNG项目,java,eclipse,maven,selenium,testng,Java,Eclipse,Maven,Selenium,Testng,我正在使用testNG和Selenium对我的应用程序运行多个functionals测试 为了进行更稳定的测试,我决定在项目文件夹中包含firefox二进制文件,并调用这个特定的二进制文件,而不是默认浏览器 我现在遇到的问题是,如果有人想使用我的测试,他必须在eclipse中导入项目,重新链接java 8库,在eclipse上安装TestNG,将selenium jar添加到项目中,最后创建TestNG配置,最后使用choosen xml运行它。 我想知道这是否可以将项目简单地转换为jar文件,

我正在使用testNG和Selenium对我的应用程序运行多个functionals测试

为了进行更稳定的测试,我决定在项目文件夹中包含firefox二进制文件,并调用这个特定的二进制文件,而不是默认浏览器

我现在遇到的问题是,如果有人想使用我的测试,他必须在eclipse中导入项目,重新链接java 8库,在eclipse上安装TestNG,将selenium jar添加到项目中,最后创建TestNG配置,最后使用choosen xml运行它。 我想知道这是否可以将项目简单地转换为jar文件,我将通过命令行调用该文件,例如:

java SeleniumTestingTest myXmlFile.xml

这样是否可以避免上述不同的设置?我们可以使用java从jar调用testNG测试吗?firefox是否可以从jar文件运行


编辑1:评论中的一个好建议是将我的源代码迁移到maven项目。但同样的问题依然存在。maven能够管理需要我的测试项目的设置吗?(包括selenium jar、java 8库、testNG jar和运行firefox浏览器)

最后,我没有使用maven,我只是在我的项目中创建了一个main。main将调用在程序参数中传递的XML文件中指定的testNG套件。这个方法将允许我从jar执行测试,而不必关心外部库(库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();

}

}
公共类运行程序{
公共静态void main(字符串[]args)引发IOException{
如果(参数长度!=2){
System.out.println(“用法:”);
系统退出(-1);
}
Path Path=Path.get(args[0]);//指向xml的路径
新的PrintWriter(args[1]).close();
Charset Charset=StandardCharsets.UTF_8;
字符串内容=新字符串(Files.readAllBytes(path),字符集);
content=content.replaceAll(“输出文件名模式”,args[1]);
write(path,content.getBytes(charset));
//我们创建一个testNG对象来运行xml文件中指定的测试
TestListenerAdapter tla=新的TestListenerAdapter();
TestNG TestNG=新的TestNG();
List suites=Lists.newArrayList();
suites.add(args[0]);
testng.setTestSuites(套房);
testng.run();
}
}

然后你只需要进入eclipse,然后点击文件->导出->运行Jar文件->选择要导出的配置->完成。

这就是maven流行的原因。考虑将源迁移到Maven项目。maven怎么能帮我更多?我知道它可以管理项目的依赖关系,我会在互联网上期待它,但如果我能从你那里得到更多关于如何使用maven解决我的问题的信息,那就太好了。@BobReynolds maven有一本手册,你不能只在stackoverflow答案中的一段信息就开始。但是,由于您的问题不是关于使用Maven,因此当前使用Maven创建任何类型的答案都会使答案脱离主题。Maven允许您在Maven
pom.xml
文件中指定构建所需的各个步骤。这包括使用适当的JVM、引入所需的JAR(作为maven依赖项),以及在配置文件上调用selenium,配置文件由源代码提供。你可能需要学习和/或重新学习很多东西——Maven有自己的观点——但对我来说,仅仅是开发而不与特定IDE绑定的能力本身就很有价值。我想Bob想知道,是否有可能将测试打包到jar文件中,这样它就可以在没有依赖关系的情况下进行分发和执行。请参见:。