使用 testng 和 maven 运行不同的测试套件

发布于 2024-11-02 14:23:58 字数 410 浏览 0 评论 0原文

我使用 TestNg 和 Maven 以及 Surefire 插件来运行我的测试。我有几个不同的组件,我希望能够使用相同的 pom 在不同时间运行。目前,为了做到这一点,我有几个不同的 XML 文件定义了一个测试套件,并且我设置了 pom,这样我就可以执行 mvn test -Dtestfile=/path 并使用该套件。

我想知道是否有一种方法可以将 XML 文件合并到一个文件中,并选择基于测试名称或其他系统的基础?

编辑:我已经用烟雾、理智、回归定义了所有测试,我希望能够为给定组件运行所有回归。如果我运行 TestNG CLI,我可以给出 -testnames comp1、comp2、comp3 等。其中每个组件都在一个 xml 套件中定义,其中包含多个测试 ()。我想知道除了使用 exec:java 插件之外,是否有任何方法可以在 Maven 中执行此操作。

I am using TestNg and Maven with the surefire plugin to run my tests. I have several different components that I want to be able to run at different times using the same pom. Currently to do this I have several different XML files defining a test suite and I have the pom set up so i can do mvn test -Dtestfile=/path and use that suite instead.

I was wondering if there is a way to combine the XML files into one file and chose base off testnames or some other system?

EDIT: I have all my tests defined with Smoke, Sanity, Regression already and I would like to be able to run all Regressions for a given component. If I run through the TestNG CLI, I am able to give -testnames comp1,comp2,comp3,etc. where each component is defined in one xml suite which contains multiple tests (). I was wondering if there was any way to do this in maven short of using the exec:java plugin.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

久而酒知 2024-11-09 14:23:58

TestNG 通过在测试用例本身或 suite.xml 文件中指定测试类/方法的组来支持测试组。通过使用组,您可以将所有测试放在一个 xml 文件中。请参阅 TestNG 用户指南中的

Surefire 插件允许根据组包含或排除测试:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.8.1</version>
        <configuration>
          <groups>${testng.groups}</groups>
        </configuration>
      </plugin>

您可以将所有测试放在一个 xml 文件中,然后通过设置要包含在 ${testng.groups} 属性中的一个或多个组来选择要运行的测试,这应该是以逗号分隔的组名称列表。

您可以使用配置文件在 POM 中或在命令行 -Dtestng.groups=[要运行的组] 上定义 ${testng.groups} 属性的值。

TestNG supports groups of tests, either by specifying groups on test classes/methods in the test cases themselves, or in the suite.xml file. By using groups, you can put all your tests in one xml file. See Groups in the TestNG user guide.

The surefire plugin allows tests to be included or excluded based on group:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.8.1</version>
        <configuration>
          <groups>${testng.groups}</groups>
        </configuration>
      </plugin>

You can put all your tests in one xml file, and then choose which ones to run by setting the group or groups to include in the ${testng.groups} property, which should be a comma-delimited list of group names.

You can define value for the ${testng.groups} property in the POM using profiles, or on the command-line -Dtestng.groups=[groups to run].

祁梦 2024-11-09 14:23:58

您可以做的是定义不同的配置文件

  <profiles>
    <profile>
      <id>t1</id>
      <build>
        <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.8.1</version>
          <configuration>
            <suiteXmlFiles>
              <suiteXmlFile>testng.xml</suiteXmlFile>
            </suiteXmlFiles>
          </configuration>
        </plugin>
      </plugins>
      </build>
     </profile>
   </profiles>

并通过 mvn -Pt1 ... 从命令行调用
或者在配置文件中定义一个属性并在配置中使用该属性。

What you can do is to define different profiles

  <profiles>
    <profile>
      <id>t1</id>
      <build>
        <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.8.1</version>
          <configuration>
            <suiteXmlFiles>
              <suiteXmlFile>testng.xml</suiteXmlFile>
            </suiteXmlFiles>
          </configuration>
        </plugin>
      </plugins>
      </build>
     </profile>
   </profiles>

and call from command line via mvn -Pt1 ...
or define a property in the profile and use that property in the configuraiton.

缘字诀 2024-11-09 14:23:58

另请注意,TestNG 允许您将多个套件合并为一个套件,例如,如果您想将 api 和 ui 冒烟测试合并为一个套件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="uber-smoke-suite" verbose="1" parallel="methods" thread-count="1" configfailurepolicy="continue">
  <suite-files>
    <suite-file path="smoke_api.xml" />
    <suite-file path="smoke_ui.xml" />
  </suite-files>
</suite>

这样您也可以创建一个 uber 套件,将所有测试合并为一个套件,但仍然允许如有必要,您可以运行单个套件,例如:

-Dtestfile=smoke
-Dtestfile=smoke_api
-Dtestfile=smoke_ui

Also note that TestNG allows you to combine multiple suites into one, e.g. if you wanted to combine your api and ui smoke tests into one suite:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="uber-smoke-suite" verbose="1" parallel="methods" thread-count="1" configfailurepolicy="continue">
  <suite-files>
    <suite-file path="smoke_api.xml" />
    <suite-file path="smoke_ui.xml" />
  </suite-files>
</suite>

That way you can also create an uber suite too that combines all your tests into one, but still allows you to run single suite if necessary, e.g.:

-Dtestfile=smoke
-Dtestfile=smoke_api
-Dtestfile=smoke_ui
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文