Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 使用Surefire在jar中执行TestNG/Selenium测试_Java_Maven_Selenium_Testng_Surefire - Fatal编程技术网

Java 使用Surefire在jar中执行TestNG/Selenium测试

Java 使用Surefire在jar中执行TestNG/Selenium测试,java,maven,selenium,testng,surefire,Java,Maven,Selenium,Testng,Surefire,我们的项目有一套Selenium测试,我们目前正在将其打包到一个jar中,目的是让Jenkins作为构建步骤运行测试。我们将jar安装到客户机VM的本地存储库中,该客户机VM配置为将Selenium指向Jenkins作为主机。我们遇到的麻烦是想办法让Maven/SureFire在我们安装的jar中找到Selenium/TestNG测试。我们有一个pom,它包含测试在客户机上所需的所有依赖项,包括测试的jar本身,但是当我们运行“mvn测试”时,找不到任何测试。很明显我们遗漏了什么,有什么想法吗?

我们的项目有一套Selenium测试,我们目前正在将其打包到一个jar中,目的是让Jenkins作为构建步骤运行测试。我们将jar安装到客户机VM的本地存储库中,该客户机VM配置为将Selenium指向Jenkins作为主机。我们遇到的麻烦是想办法让Maven/SureFire在我们安装的jar中找到Selenium/TestNG测试。我们有一个pom,它包含测试在客户机上所需的所有依赖项,包括测试的jar本身,但是当我们运行“mvn测试”时,找不到任何测试。很明显我们遗漏了什么,有什么想法吗?谢谢。

surefire默认情况下,查找Test*.java、*Test.java、*TestCase.java等文件名并执行它们。如果您的测试没有遵循这些模式中的任何一种,那么您必须显式地包含它们

创建一个调用testNG main method的main方法,并将main方法args[]传递给testNG main方法。现在,您的测试jar将有它的主要方法来触发您想要的测试用例。您可以将与TestNG相同的参数传递给jar文件,如TestNG.xml文件或-testClass classapath等。。。见下面的例子

public static void main(String args[])
{
    org.testng.TestNG.main(arg);
}

现在,您只需要创建一个测试类的xml文件,并在jenkins中使用windows批处理命令在远程计算机上使用所需的testNG参数调用jar文件。

最好创建一个包含测试列表的
testNG.xml
文件。Surefire很幼稚,不足以识别测试。让TestNG实际找到它们。糟糕的是,TestNG无法扫描源.jar文件。嗯。也许有一种方法。TestNG扫描jar中的所有文件,寻找
@Test
注释。当然不会;它使用不太灵活的JUnit方法。