maven - 如何为运行(Cucumber)验收测试指定一个单独的 Maven 目标?

标签 maven integration-testing cucumber-jvm cucumber-junit

我有以下项目结构:

MyProject
   --src
   --test
      --acceptance
         --step_definitions
         --features
      --unit

我希望能够在 Maven 中与在 test/unit 中声明的单元测试分开运行我的 cucumber 测试(在测试/验收中),以便它们可以在不同的 CI 构建计划等中运行。我正在使用 cucumber-junit 所以每个验收测试的“运行程序”都是用 JUnit 编写的。

这可能吗?

最佳答案

Is this possible?



是的,有可能。我相信您应该将您的单元与验收/集成测试分开:

修改文件夹结构对于这两个,将您的集成测试文件放在 standard locationsrc/it :
MyProject/
  • src/main/java/ (SUT)
  • src/test/ (单元测试代码)
  • java/
  • resources/
  • src/it/ (验收/集成测试)
  • java/ (步骤定义)
  • resources/ (功能文件)

  • 此外,根据设计,不同的 Maven 插件 用于单元和集成测试:
  • 对于单元测试: maven-surefire-plugin
  • 验收/集成测试: maven-failsafe-plugin

  • 您还必须 bind execution of maven-failsafe-pulgin .要单独运行集成测试,您可以定义一个新配置文件:
    <profiles>
      <profile>
        <id>acceptance-tests</id>
        <build>
          <plugins>
            <plugin>
              <artifactId>maven-failsafe-plugin</artifactId>
              <version>2.12</version>
              <executions>
                <execution>
                  <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>    
        </build>
      </profile>
    </profiles>
    

    您还需要 configure the plugin to search src/it测试用例的目录树。

    验收测试可以在之后使用:
    mvn clean verify -Pacceptance-tests
    

    如需完整示例,我建议您关注 http://www.weblogism.com/item/334/integration-tests-with-cucumber-jvm-selenium-and-maven

    关于maven - 如何为运行(Cucumber)验收测试指定一个单独的 Maven 目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18164579/

    相关文章:

    java - 如何在maven构建之前运行一个类?

    用于远程 JAR 的 Java 注释处理器

    database - 何时模拟数据库访问

    maven - 为什么 <excludeGroups> 起作用而 <groups> 不起作用?

    java - 无法在 Eclipse 中运行组件测试

    java - Cucumber-JVM:根据场景的可视文本执行另一个 Scenario/ScenarioOutline 中的步骤

    java - 带复选框的 vaadin8.1.0 网格有问题

    java - Maven 依赖项在线且不在存储库中

    testing - 如何使用 Hound 从选择下拉列表中选择一个选项?

    cucumber - 在 Cucumber 场景中将空格作为参数表的值