如何从Maven项目外部化TestNG/Junit测试(稀疏地运行它们)?

如何从Maven项目外部化TestNG/Junit测试(稀疏地运行它们)?,maven,selenium,junit,testng,Maven,Selenium,Junit,Testng,在我的项目中,我将所有集成(junit)和selenium(testng)测试分离到一个maven模块中。测试通过maven在父模块上执行。因此,在集成/selenium测试之前,将构建主模块并设置一些属性。(jenkins对每个构建运行所有测试) 现在我需要独立于主模块运行这个模块的测试(尤其是selenium测试必须在外部执行)。如何做到这一点?是否有用于测试的“带依赖项的jar”。如果您已经在主模块上运行了mvn install,您可以在集成测试模块上运行mvn test命令(或运行Sel

在我的项目中,我将所有集成(junit)和selenium(testng)测试分离到一个maven模块中。测试通过maven在父模块上执行。因此,在集成/selenium测试之前,将构建主模块并设置一些属性。(jenkins对每个构建运行所有测试)


现在我需要独立于主模块运行这个模块的测试(尤其是selenium测试必须在外部执行)。如何做到这一点?是否有用于测试的“带依赖项的jar”。

如果您已经在主模块上运行了
mvn install
,您可以在集成测试模块上运行
mvn test
命令(或运行Selenium测试所用的任何命令)。

在pom中的下面添加以下标记

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>

朱尼特
朱尼特
4.8.1
测试
在下面添加以下内容

<testSourceDirectory>D:\eclipse_workspace\Utils_project\test_filelister</testSourceDirectory>
D:\eclipse\u工作区\Utils\u项目\test\u文件列表器
在插件中添加以下内容

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<configuration>
    <test>**/*.java</test>
</configuration>
</plugin>

org.apache.maven.plugins
maven surefire插件
2.11
**/*.爪哇

问题是:两个模块共享许多配置项(除了它们的关系之外),因此测试模块上的mvn测试目前无法工作(安装主模块是不够的)。问题是:它们是一种不用maven运行测试的方法吗?或者是否有一个maven插件/目标要在创建可运行测试工件的父级上运行?通常,声明对主模块的依赖关系就足够了,但您必须提供一个关于共享配置的更具体的示例。在最坏的情况下,您可以使用主项目的相对路径在测试模块中声明配置的路径。除了插件版本和某些属性外,两个模块共享(仅在父pom中指定)父版本,从而共享版本、公司pom和groupId。我的问题是:只运行一个模块的最低要求是什么。目前,我必须(在maven旁边)安装公司pom、父pom和主模块,以便能够运行测试。是否有一种方法可以为测试模块提供一种替代配置(针对外部环境)——可能是通过一个概要文件——以减少需求(没有公司pom,没有父pom),或者在最好的情况下没有主模块和mvn(所有模块都有一个jar)。您可以为测试模块选择父模块。它不一定是你的公司母公司pom。另一方面,父母并不是经常改变(或者有什么不对劲),所以这实际上可能不是一个问题。无论如何,使用某种CI服务器也会有助于安装其他模块。我想在两种不同的环境中运行selenium测试:我们的环境(公司环境)和客户环境(是否可以通过配置文件更改父环境?)。可能还有一个maven基础设施,但我想尽量减少对第二个环境的需求(一个可执行jar只有一个:java)。@khmarbaise确实如此,但我觉得这样更容易理解