gpt4 book ai didi

java - 通过在命令行上指定多个 Maven 配置文件来堆叠属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:06 24 4
gpt4 key购买 nike

我终于使用 JUnit4 @Category 为每个测试运行了我的测试自动化;它们被标记为 PriorityHighPriorityMediumPriorityLow

在我的 pom.xml 中,我将每个设置为一个配置文件:

<profile>
<id>PriorityHigh</id>
<properties>
<testcase.category>com.categories.PriorityHigh</testcase.category>
</properties>
</profile>
<profile>
<id>PriorityMedium</id>
<properties>
<testcase.category>com.categories.PriorityMedium</testcase.category>
</properties>
</profile>
<profile>
<id>PriorityLow</id>
<properties>
<testcase.category>com.categories.PriorityLow</testcase.category>
</properties>
</profile>

然后在插件部分使用:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<groups>${testcase.category}</groups>
<systemPropertyVariables>
<automation.driver>${browser.name}</automation.driver>
</systemPropertyVariables>
</configuration>
</plugin>

我的问题是当我想同时测试 Medium 和 High 时,我指定了

-P PriorityHigh,PriorityMedium 

但是它们不是添加/连接,而是覆盖,因此只运行 Medium 测试。为了增加额外的难度,因为 pom.xml 提示 ${testcase.category} 只存在于配置文件中,没有默认值,我不得不添加这个:

<testcase.category>com.categories.PriorityHigh,com.categories.PriorityMedium,com.categories.PriorityLow</testcase.category>

如果没有指定配置文件。

所以两个问题:

  1. 如何让配置文件在“组”节点中正确堆叠?
  2. 如果未指定配置文件(应运行所有测试),有更好的工作方式吗?

最佳答案

最简单的做法是放弃配置文件,只使用系统属性:

<properties>
<testcase.category>com.categories.PriorityHigh,com.categories.PriorityLow</testcase.category>
</properties>

...

<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<groups>${testcase.category}</groups>
...
</configuration>
</plugin>

然后:

mvn verify -Dtestcase.category=com.categories.PriorityHigh
# runs PriorityHigh tests

mvn verify -Dtestcase.category=com.categories.PriorityHigh,com.categories.PriorityLow
# runs PriorityHigh and PriorityLow tests

mvn verify
# runs PriorityHigh and PriorityLow tests

如果您不想在 Maven 命令行上指定完全限定的类别类名称,您可以使用 Build Helper 插件为您限定名称:

<properties>
<testcase.category>PriorityHigh,PriorityLow</testcase.category>
</properties>

...

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>build-fq-testcase-category</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>fq.testcase.category</name>
<regex>([^,]+)</regex>
<value>${testcase.category}</value>
<replacement>com.categories.$1</replacement>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<groups>${fq.testcase.category}</groups>
</configuration>
</plugin>

然后:

mvn verify -Dtestcase.category=PriorityHigh
# just run PriorityHigh tests

mvn verify
# run PriorityLow and PriorityHigh tests

# etc.

关于java - 通过在命令行上指定多个 Maven 配置文件来堆叠属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42403915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com