【问题标题】:Cant get certain feature file tags to run through TeamCity无法让某些功能文件标签通过 TeamCity 运行
【发布时间】:2018-08-29 07:52:31
【问题描述】:

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

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

下面是我的一些项目结构,您可以在其中看到包含_Run_AllTest.java 和我的资源文件夹中的功能的跑步者。

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

举一个我正在使用的标签的例子,A​​llTPOS.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 运行时运行?

Edit1:如果我从 POM 中删除以下内容

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

然后我通过带有mvn clean test -Dcucumber.options="--tags @AutomatedTPOS" 的命令运行我的场景,然后我可以看到事情按预期工作,即只有@AutomatedTPOS 场景正在运行。但是,如果我随后通过 TeamCity 启动此构建,则这次根本不会运行任何测试。当 POM 中的这条线出现时,所有场景都在运行。

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

【问题讨论】:

    标签: maven continuous-integration cucumber teamcity continuous-deployment


    【解决方案1】:

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

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

    我还从 POM 中删除了以下内容,因为这没有任何意义。

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

    【讨论】:

      【解决方案2】:

      我认为引用可能放错了位置。您可能会更幸运地使用:

      -Dmaven.multiModuleProjectDirectory="%mavenhome%" -Dcucumber.options=--tags "@AutomatedTPOS"
      

      【讨论】:

      • 感谢您的回复。恐怕这似乎并没有解决问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多