如何构建运行测试套件的 Maven 工件? “sbt 测试”如何工作?

Posted

技术标签:

【中文标题】如何构建运行测试套件的 Maven 工件? “sbt 测试”如何工作?【英文标题】:How to build maven artifact that run test suites? How 'sbt test' works? 【发布时间】:2017-11-09 14:17:22 【问题描述】:

我是 scala 开发人员,所以我会尝试用 sbt 示例来解释我的想法,但我相信 java 开发人员可以理解我

传统的scala/java项目结构如下:

src ->
 - main
 - test
 - it

test 文件夹在概念上用于单元测试(用于测试应用程序逻辑)。所以你可以运行'sbt test'并测试你的应用程序。此代码必须靠近您的应用程序。

可能是题外话,这是我的问题:

是否可以构建运行我所有测试的 jar 工件?我不想仅仅为了运行我的测试而启动 sbt。我想用集成测试套件构建许多 jar 工件

java my-super-service-it-case1.jar

如果测试通过,这会给我退出代码 0

java my-super-service-it-case2.jar 

等等……

我相信我需要在主块内运行测试..

【问题讨论】:

【参考方案1】:

我不建议您在程序的主要功能中混合您的任何测试,有一个非常好的插件可以完全满足您的需求,Maven Surefire Plugin 它应该可以在 Scala 中正常工作,但从来没有我自己搞砸了 Scala。

在这里写出你需要的东西太多了,但它在文档和大量示例中都有很好的介绍。您可以指定包含和排除的不同目标,例如,您可以执行单元测试或验收测试,例如:

mvn verify -P acceptance-tests -Dbuild.env=sit

POM.XML 文件中配置了以下配置文件

<profile>
  <id>acceptance-tests</id>
  <activation>
    <property>
      <name>env.BUILD_STAGE</name>
      <value>ACCEPTANCE</value>
    </property>
  </activation>
  <build>
    <plugins>
      <!-- skip unit tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>

      <!-- run acceptance tests (during integration-test phase) -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <includes>
            <include>**/*AT*.*</include>
          </includes>
          <excludes>
            <exclude>**/*Test.*</exclude>
            <exclude>**/*IT.*</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

我所有的验收测试都用 AT 命名,例如 myTestAT.java

【讨论】:

以上是关于如何构建运行测试套件的 Maven 工件? “sbt 测试”如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

特定测试套件的 Maven 运行命令

Maven 故障安全插件不运行 testNG XML 套件

在VSTS上发布释放触发器,以运行端到端测试套件

如何在 Hudson 中删除不需要的构建工件

如果某个工件已经存在,如何使 Maven 构建失败

如何使用 HSQLDB 内存数据库设置为 Maven 项目执行 Junit 测试套件?