【问题标题】:How to externalize TestNG/Junit tests (run them sparatly) from a Maven project?如何从 Maven 项目中外部化 TestNG/Junit 测试(分散运行)?
【发布时间】:2012-03-26 14:51:29
【问题描述】:

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

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

【问题讨论】:

    标签: maven selenium junit testng


    【解决方案1】:

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

    【讨论】:

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

    在你的 pom 下添加以下标签

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

    下添加以下内容
    <testSourceDirectory>D:\eclipse_workspace\Utils_project\test_filelister</testSourceDirectory>
    

    在插件中添加以下内容

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

    【讨论】:

    • @khmarbaise 没错,但我觉得这样更容易理解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多