gpt4 book ai didi

maven - 无法获得某些功能文件标签以通过TeamCity运行

转载 作者:行者123 更新时间:2023-12-04 08:40:16 24 4
gpt4 key购买 nike

我有各种 cucumber 功能文件,每个文件都有多个场景。每个功能文件用于系统的不同组件。

我有各种各样的奔跑者,每个组件一个,因此每个功能文件一个。

下面是我的一些项目结构,您可以在其中看到运行程序,这些运行程序包含_Run_AllTest.java和Resources文件夹中的功能。

Test
├───java
│ │
│ ├───stepdefs
│ │ ├───MOPStepDefs
│ │ │ ADAWA_Run_AllTest.java
│ │ │ DPL_Run_AllTest.java
│ │ │ MOPStepDefs.java
│ │ │ MOP_Run_AllTest.java
│ │ │
│ │ ├───MOSStepDefs
│ │ │ MOSStepDefs.java
│ │ │ MOS_Run_AllTest.java
│ │ │ PAR_Run_AllTest.java
│ │ │ RenewalApproachingPAR_Run_AllTest.java
│ │ │
│ │ ├───OAStepDefs
│ │ │ OAStepDefs.java
│ │ │ OA_Run_AllTest.java
│ │ │
│ │ └───TPOSStepDefs
│ │ TPOStepDefs.java
│ │ TPOS_Run_AllTest.java
│ │
│ └───Testconfig
│ TestMDABDDConfig.java

└───Resources
├───MOP Features
│ ADAWADentalOnlinePayments.feature
│ DPLDentalOnlinePayments.feature
│ MemberOnlinePayments.feature

├───MOS Features
│ MemberOnlineService.feature
│ PolicyAmendRequest.feature
│ RenewalApproachingPAR.feature

├───Online Apps Features
│ OnlineApplications.feature

└───TPOS Features
AllTPOS.feature

为了举例说明我正在使用的标签,AllTPOS.feature将在我已自动化的功能上包含@AutomatedTPOS的标签。还有一些带有@Manual标签的标签。我使用此功能的运行者如下所示:
package stepdefs.TPOSStepDefs;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {
"html:C:\\Projects\\BDD\\Online Framework\\Reporting\\TPOS Features",
"pretty"
},
features = "src\\test\\Resources\\TPOS Features\\AllTPOS.feature",
tags = {"~@Manual"}
)


public class TPOS_Run_AllTest {
}

我的.pom文件中包含以下内容,其中声明包括我的所有运行程序文件,即 **/*_Run_All*.java
    <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<testSourceDirectory>\src\test\java\</testSourceDirectory>
<!--<testClassesDirectory>C:/TeamCity/buildAgent2nd/work/classes/</testClassesDirectory>-->
<includes>
<include>**/*_Run_All*.java</include>
</includes>
<!-- <excludes> <exclude>**/*RunCukesTest.java</exclude> </excludes> -->
</configuration>
</plugin>

如果我要通过诸如 mvn clean test -Dcucumber.options="--tags @AutomatedTPOS"之类的命令行运行maven命令,那么一切似乎都能按预期工作,并且只有带有@AutomatedTPOS标记的功能才能运行。

所以我的问题是当我们通过TeamCity尝试此操作时。 CI开发人员已将 -Dmaven.multiModuleProjectDirectory="%mavenhome%" "-Dcucumber.options=--tags @AutomatedTPOS"的JVM命令行参数添加到TeamCity中,但是当我们从TeamCity运行时,它将运行每个功能,而不仅仅是我们希望的@AutomatedTPOS功能。

我看不到@AutomatedTPOS功能仅在我们从TeamCity运行时运行,这是什么错误?

编辑1:如果我从POM中删除以下内容
             <includes>
<include>**/*_Run_All*.java</include>
</includes>

然后我使用 mvn clean test -Dcucumber.options="--tags @AutomatedTPOS"通过命令运行我的方案,然后我可以看到一切正常,即仅运行@AutomatedTPOS方案。但是,如果我随后通过TeamCity启动此构建,则这次完全不会运行任何测试。就像在POM中出现此行时一样,所有方案都在运行。

当我通过TeamCity查看构建日志时,可以看到comand行包含 "-Dcucumber.options=\"--tags @AutomatedTPOS\""

最佳答案

在CI开发人员的帮助下,我们找到了答案。

在TeamCity中,"-Dcucumber.options=--tags @AutomatedTPOS"的参数应该在“其他Maven命令行参数:”字段中,而不是在“JVM命令行参数:”字段中。

我也从POM中删除了以下内容,因为这没有用。

         <includes>
<include>**/*_Run_All*.java</include>
</includes>

关于maven - 无法获得某些功能文件标签以通过TeamCity运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51998698/

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